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