开发者

NotSerializableException for ToolkitImage when serializing a model in Swing

I have Swing application which manipulate shapes. In my toolbar I have a zoom function that the user activate by clicking on a button, then the cursor of the mouse changes to a magnifier which is an image. My problem is actually the cursor, for some raisons, when I set the cursor on the panel displaying the shapes, I can't save my model and I get the java.io.NotSerializableException: sun.awt.image.ToolkitImage exception.

My model

public class Document implements IDocObservable,Serializable{

...

public void updateCursor() {
    Iterator<IDocObserver> iter = docObservers.iterator();
    while (iter.hasNext()) {
        iter.next().docCursorChanged();
    }
}
... 

}

The action

public class ZoomInAction extends AbstractAction {


public void actionPerformed(ActionEvent arg0) {
    ...
    Application.getInstance().getActiveDocument().updateCursor();
}

}

The display Panel (note : if I comment the setCursor(..) line, I'am able to save )

public class Wi开发者_运维技巧ndow extends JPanel implements IDocObserver{
...

public void paint(Graphics g){          
    //drawing the differents shapes
}

@Override

public void docCursorChanged() {        
    setCursor(Utile.getZoomInCursor();
    }
}

}

The class that provide the cursor

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, ""); 
}

}

The writing of the object is a standard Java methode with outStream.writeObject(doc);

thanks


You aren't just serializing a model, you are serializing a list of IDocObservers, which includes Window extends JPanel implements IDocObserver. IOW you are serializing a JPanel. Don't do that: see the warning at the top of the Javadoc. You don't need to save the observers along with the observable, surely: can't you make that list transient?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜