シェイプを操作するSwingアプリケーションがあります。私のツールバーには、ユーザーがボタンをクリックしてアクティブにするズーム機能があり、マウスのカーソルが画像である拡大鏡に変わります。 私の問題は実際にカーソルです。一部のレイズンでは、シェイプを表示しているパネルにカーソルを合わせると、モデルを保存できなくなり、java.io.NotSerializableException: sun.awt.image.ToolkitImage
例外が発生します。SwingでモデルをシリアライズするときのToolkitImageのNotSerializableException
マイモデル
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();
}
}
ディスプレイパネル(注:私はへI'amができ、setCursor(..)
行をコメント場合保存)
public class Window extends JPanel implements IDocObserver{
...
public void paint(Graphics g){
//drawing the differents shapes
}
@Override
public void docCursorChanged() {
setCursor(Utile.getZoomInCursor();
}
}
}
オブジェクトの書き込みがあなたがoutStream.writeObject(doc);
おかげ
それは働いたオブザーバーリストを一時的なものにするとき、私はアプリケーションへの影響を評価して見るつもりです。 – outellou