일단 프로그램은 직선을 그리는 그림판 입니다.
목표는 이러한 그린 그림을 파일로 저장하고, 다시 불러오기 기능을 추가하는 건데요.
private class Line implements Serializable {
public Point p1, p2;
Line(int x1, int y1, int x2, int y2) {
p1 = new Point(x1, y1);
p2 = new Point(x2, y2);
}
public String toString() {
return p1 + "," + p2;
}
}
// Line 클래스의 정의입니다. 두점을 받지요 ㅠㅠ
public void mouseReleased(MouseEvent e) {
Line l = new Line(rx, ry, rx2, ry2);
lines.add(l);
}
//마우스 드래그를 풀었을때, 시작 좌표하고, 끝좌표를 받아서 lines 라는 ArrayList에 저장하여, 그렸던 직선을
다음 그릴때도 유지하도록 합니다. ㅠ
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b) {
clear();
} else if (e.getSource() == b1) {
try {
String a = t.getText();
FileOutputStream f = new FileOutputStream(a);
ObjectOutputStream of = new ObjectOutputStream(f);
Line l = new Line(rx, ry, rx2, ry2);
lines.add(l);
of.writeObject(lines);
of.close();
} catch (IOException e1) {
System.out.println(e1.getMessage());
}
} else if (e.getSource() == b2) {
int retval = fileChooser.showOpenDialog(CenterPanel.this);
if (retval == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
FileInputStream f = new FileInputStream(file);
ObjectInputStream of = new ObjectInputStream(f);
Object li = of.readObject();
Line lin = (Line) li;
of.close();
} catch (Exception e1) {
System.out.println(e1.getMessage());
}
}
}
}
문제는 이부분인데요.
일단 저장하는 부분은 잘됩니다. ㅠㅠ
하지만 반대로 로드할때 에러가 나는데요.
저장할때 부터 잘 못된건가요?
Line l = new Line(rx,ry,rx2,ry2) 하면
직선 여러개 그린거 object 타입으로 다 저장되지 않는건가요? ㅠㅠ
이상하게 파일을 불러올때 에러가뜨는 현상이 나타나서요 ㅠㅠ
load할때도 파일이 불러오지도 않구요. ㅠㅠㅠㅠ
전부는 아니지만 제가 생각할 수 있도록 힌트좀 주셨으면 합니다...
매번 와서 질문하는게 죄송하긴하지만 정말 마땅히 물어볼 곳이 없더군요. ㅠㅠㅠ