拡張する2つのスイングクラスがありますJFrame
。どちらshow()
もコンストラクターにメソッドがあります。ClassOne
私からボタンクリックイベントClassTwo
のようなものを呼び出しました。new ClassTwo()
しかし、ボタンをもう一度押すと、新しいウィンドウClassTwo
が開きます。ClassTwoウィンドウが1つ開いている場合、ClassTwoウィンドウを開くのを止めるにはどうすればよいですか?
編集
この問題は解決されましたが、ClassTwo ウィンドウを最初に開いたときに 1 つのウィンドウが表示されます。次に、ClassTwoウィンドウを再度開いたときに閉じた後、2つのウィンドウが開き、このカウントは増加し続けます。なぜこれが起こっているのですか?
編集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);
}
}
});
}