怎样才能让MouseListener在java中变得短暂?假设我有:
public class PanelClass extends JPanel implements Serializable{
private int w;
private int h;
public PanelClass(int w, int h){
this.w = w;
this.h = h;
this.setSize(w, h);
this.setBounds(0, 0, w, h);
}
}
public class MainPanel extends JPanel implements Serializable{
public MainPanel(){
setSize(500,500);
}
}
public class MyClass implements MouseListener, Serializable{
private ArrayList<PanelClass> panels = new ArrayList<>();
private MainPanel mp = new MainPanel();
for(PanelClass panel : panels){
panel.addMouseListener(this);
mp.add(panel);
}
private void serialize(){
//SERIALIZE MainPanel
}
}现在,如果我想序列化,MainPanel将返回一个关于GridLayout no Serializable的错误。
如果我不将MouseListener添加到面板中,一切正常;将进行序列化。
我想知道是否可以将此MouseListener设置为瞬态,以及如何设置?
谢谢。
发布于 2017-02-18 20:27:26
GridLayouts是不可序列化的。
关于鼠标侦听器-您需要做的是在序列化对象时删除侦听器,并在反序列化方法上重新添加鼠标侦听器。
How to make my MouseListeners work in a deserialized JPanel?
也可以在那里阅读答案。
希望这能帮上忙。
发布于 2017-02-18 20:52:32
好的..。我通过创建一个自定义的MouseListener并将其声明为瞬态来解决了这个问题。就像一种护身符。:)
https://stackoverflow.com/questions/42314819
复制相似问题