你能帮助我在这里? 一个非常简单的问题,但我只是无法得到解决的办法是什么!
我编码是在自己的线程中运行和侦听传入连接的ServerSocket侦听器应用程序。
当一个连接到达时,一个新的“消息”对象上的新的线程创建和传递的传入文本数据“ messageData
”。 那么这个对象应显示在弹出窗口中的文本给用户。
在Listener.java:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Message.display(messageData);
}
});
然后,在Message.java:
public Message {
public static void display(String data) {
Message message = new Message(data);
message.initGUI();
}
String messageData;
GUI gui;
public Message(String data) {
messageData = data;
gui = new GUI();
}
public void initGUI() {
gui.init();
// add listeners
gui.addOKListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// close GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
gui.close();
}
});
gui = null;
}
});
}
public class GUI {
do GUI stuff
... initialise gui
... add components
... setVisible=true
}
}
这个想法是,内部类GUI是“查看”和该消息对象是模型和控制器组合。
每个消息对象最初通过静态创建本身Message.display()
方法。 这意味着可以无限制的消息对象都独立存在和监听不必担心如何管理它们。
大。 但是我现在有一个问题。
当在GUI上的用户点击“OK”,我想的(a)的GUI将被删除/隐藏,和(b)的消息对象从存储器中删除。
我该怎么办(一)和(b)? 我可以做的(a) gui=null
在gui.addOKListener()
见上文),但因为我没有到消息对象的引用我不能这样做(b)中。
我曾试图定义addOKListener() Message.display()
但是,这并不工作,因为我必须作出message
,我创造的最终目的,因此message=null
是非法的。
一个非常简单的problem-我猜解决方案也很简单。 这是非常令人沮丧..
非常感谢
将