Mam 2 klasy swing, które rozszerzają JFrame
. Oba mają metodę show()
w tym konstruktorze. Od ClassOne
zadzwoniłem pod numer ClassTwo
, np. new ClassTwo()
po zdarzeniu kliknięcia przycisku. Ale jeśli ponownie naciśniesz przycisk, otworzy się nowe okno dla ClassTwo
. Jak więc mogę przerwać otwieranie okna ClassTwo, jeśli otworzy się jedno okno ClassTwo?jak zatrzymać otwieranie duplikatu okna za pomocą Smack API w swing?
Edit
teraz ten problem został rozwiązany, ale teraz, kiedy okno pierwszy otwarty ClassTwo pokazuje jedno okno. Następnie po zamknięciu, gdy ponownie otwieram okno ClassTwo, otwiera się dwa okna i ta liczba wciąż się powiększa. Dlaczego tak się dzieje?
EDIT 2
Okazało się, że jej nie huśtawka problem, ale jego problemy z MultiUsreChat klasy Samck API. Tak więc każdy, kto nad tym pracował, pomaga mi.
kod w ClassOne jest:
if(!winList.contains(room_jid)){
new ClassTwo(room_jid,....);
winList.add(room_jid);
}
i ClassTwo jest:
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();
}
Edycja 3
konstruktor 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);
}
}
});
}
@Kdansky: To rozwiązanie nie jest dla mnie użyteczne, ponieważ chcę jednocześnie otwierać wiele okien ClassTwo. Tak więc muszę utworzyć nową instancję za każdym razem, gdy kliknę przycisk. –
Napisałeś "Więc jak mogę przerwać otwieranie okna ClassTwo, jeśli otworzy się jedno okno ClassTwo?". Proszę o wyjaśnienie. –
@Kdansky: To było moje pytanie, które zostało rozwiązane, ale następnym pytaniem jest otwarcie wcześniej zamkniętych okien. zobacz moje "Edytuj". –