【发布时间】:2011-06-19 23:13:30
【问题描述】:
我有 2 个摇摆课程,它们扩展了 JFrame。两者都在构造函数中有show() 方法。从ClassOne 我打电话给ClassTwo 就像new ClassTwo() 在按钮点击事件上。但是,如果我再次按下按钮,ClassTwo 的新窗口将打开。那么,如果打开了一个 ClassTwo 窗口,如何停止打开 ClassTwo 窗口呢?
编辑
现在这个问题已经解决了,但是现在当我第一次打开 ClassTwo 窗口时,它会显示一个窗口。然后在我再次打开 ClassTwo 窗口时关闭它后,它会打开两个窗口,并且这个计数继续增加。为什么会这样?
编辑 2
我发现这不是摇摆问题,而是来自 Samck API 的 MultiUsreChat 类的问题。所以任何参与过它的人都会帮助我。
ClassOne 中的代码是:
if(!winList.contains(room_jid)){
new ClassTwo(room_jid,....);
winList.add(room_jid);
}
在 ClassTwo 中是:
public ClassTwo(....){
......
this.muc = new MultiUserChat(connection, room_jid);
if(!muc.isJoined())
muc.join(this.user_id); //---- This line opens previously closed window.
.....
if(!isVisible())
show();
}
编辑 3
类的构造函数
public ClassOne(){
JButton btn = new JButton("Open");
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!winList.contains(room_jid)){
new ClassTwo(room_jid,....);
winList.add(room_jid);
}
}
});
}
【问题讨论】: