У меня есть приложение Swing, которое манипулирует фигурами. На моей панели инструментов есть функция масштабирования, которую пользователь активирует, нажимая кнопку, а затем курсор мыши меняется на лупу, которая является изображением.
Моя проблема - на самом деле курсор, для некоторых случаев, когда я устанавливаю курсор на панель, отображающую фигуры, я не могу сохранить свою модель и получаю исключение java.io.NotSerializableException: sun.awt.image.ToolkitImage
.
Моя модель
public class Document implements IDocObservable,Serializable{
...
public void updateCursor() {
Iterator<IDocObserver> iter = docObservers.iterator();
while (iter.hasNext()) {
iter.next().docCursorChanged();
}
}
...
}
Акция
public class ZoomInAction extends AbstractAction {
public void actionPerformed(ActionEvent arg0) {
...
Application.getInstance().getActiveDocument().updateCursor();
}
}
Панель дисплея (примечание: если я прокомментирую строку setCursor(..)
, я смогу сохранить)
public class Window extends JPanel implements IDocObserver{
...
public void paint(Graphics g){
//drawing the differents shapes
}
@Override
public void docCursorChanged() {
setCursor(Utile.getZoomInCursor();
}
}
}
Класс, предоставляющий курсор
public class Utile {
private static Image zoomIn = toolkit.getImage(Utile.class.getResource("/images/zoomin_mouse.png"));
...
public static Cursor getZoomInCursor() {
return toolkit.createCustomCursor(zoomIn, hotSpot, "");
}
}
Запись объекта представляет собой стандартный метод Java с outStream.writeObject(doc);
спасибо