У меня есть 2 класса свинга, которые расширяются JFrame
. Оба имеют метод show()
в конструкторе. С ClassOne
я звонил ClassTwo
как new ClassTwo()
при нажатии кнопки. Но если я снова нажму кнопку, откроется новое окно для ClassTwo
. Итак, как я могу остановить открытие окна ClassTwo, если открыто одно окно ClassTwo?
Редактировать
Теперь эта проблема решена, но теперь, когда я впервые открываю окно ClassTwo, отображается одно окно. Затем после закрытия, когда я снова открываю окно ClassTwo, оно открывает два окна, и этот счет продолжает увеличиваться. Почему это происходит?
РЕДАКТИРОВАТЬ 2
Я обнаружил, что это не проблема свинга, а проблема из класса MultiUsreChat API Samck. Так что любой, кто работал над этим, поможет мне.
код в 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
конструктор classone
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);
}
}
});
}