Ho 2 classi di swing che si estende JFrame
. Entrambi hanno il metodo show()
nel costruttore. Da ClassOne
ho chiamato ClassTwo
come new ClassTwo()
sull'evento clic del pulsante. Ma se premo nuovamente il pulsante, viene aperta una nuova finestra per ClassTwo
. Quindi, come posso interrompere l'apertura della finestra di ClassTwo se viene aperta una finestra di ClassTwo?come interrompere l'apertura della finestra duplicata usando l'API Smack in swing?
Modifica
ora questo problema è risolto, ma ora quando finestra ClassTwo prima apertura mostra una finestra. Poi, dopo averlo chiuso quando apro di nuovo la finestra di ClassTwo, apre due finestre e questo conteggio continua ad aumentare. Perché questo sta accadendo?
EDIT 2
ho trovato che non la sua oscillare problema ma il suo problema dalla classe MultiUsreChat di Samck API. Quindi chiunque mi abbia lavorato mi può aiutare.
il codice ClassOne è:
if(!winList.contains(room_jid)){
new ClassTwo(room_jid,....);
winList.add(room_jid);
}
ed in 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();
}
Edit 3
costruttore 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: questa soluzione non è utile per me perché desidero aprire contemporaneamente più finestre ClassTwo. Quindi devo creare una nuova istanza ogni volta che clicco sul pulsante. –
Hai scritto "Allora, come posso interrompere l'apertura della finestra di ClassTwo se viene aperta una finestra di ClassTwo?". Si prega di precisare. –
@Kdansky: è stata la mia domanda che è stata risolta, ma la prossima domanda è l'apertura di finestre chiuse in precedenza. vedi il mio 'Edit'. –