как остановить открытие дублирующего окна с помощью Smack API в свинге?

У меня есть 2 класса свинга, которые расширяют JFrame . Оба имеют в конструкторе метод show () . Из ClassOne я вызвал ClassTwo как new ClassTwo () при нажатии кнопки. Но если я снова нажму кнопку, откроется новое окно для ClassTwo . Итак, как я могу остановить открытие окна ClassTwo, если открыто одно окно ClassTwo?

Edit

теперь эта проблема решена, но теперь, когда я впервые открываю окно 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();

}

Edit 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);
       }
     }
  });
}
7
задан Harry Joy 12 February 2011 в 04:48
поделиться