2012-05-08 4 views
2

У меня есть класс, как это:Как открыть новое окно

public class A { 
    public static void main() { 
     B f1 = new B(); 
     f1.setVisible(true); 
    } 

    class B extends JFrame { 
     public B() { 
      JButton btn = new JButton("click me"); 
      btn.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent evt) { 
        C f2 = new C(); 
        f2.setVisible(true); 
       } 
      }); 
      add(btn); 
     } 
    } 

    class C extends JFrame { 
     public C() { 
      //whatever here 
     } 
    } 
} 

Когда я первый запустить этот код Java, окно X содержит кнопку «жми меня». После того, как я нажму на него, появится новое окно Y. Но проблема в том, что когда я закрываю новое окно Y, старое окно X автоматически закрывается вместе с Y. (то есть они одновременно закрываются)

Что я хочу сделать, так это то, что после того, как я закрою Y, Х держится там и не закрывается. Как это сделать?

+1

Вы должны изменить аргумент метода 'setDefaultCloseOperation()', который определяет, что происходит при нажатии кнопки закрытия. В этом случае вы должны использовать 'DISPOSE_ON_CLOSE' в качестве аргумента. Причина, по которой обе кадры расположены, заключается в том, что вы устанавливаете аргумент 'EXIT_ON_CLOSE', который завершает * весь процесс *. Если вам нужна дополнительная помощь, пожалуйста, спросите. :) – fireshadow52

+0

Обычно закрытие одного окна не влияет на другое окно. Может быть, вы устанавливаете defaultCloseOperation для выхода? – ControlAltDel

+0

@ fireshadow52 YEAH! Я понял! Спасибо! – sc1013

ответ

2

Вы должны изменить аргумент метода setDefaultCloseOperation(), который определяет, что происходит при нажатии кнопки закрытия. В этом случае в качестве аргумента вы должны использовать DISPOSE_ON_CLOSE. Причина, по которой обе кадры располагаются, предположительно потому, что вы установили аргумент EXIT_ON_CLOSE (если вы не указали это явно, то это было сделано для вас, это поведение по умолчанию для всех кадров по умолчанию), которое завершает весь процесс Это включает все открытые окна и фреймы. Если вам нужна дополнительная помощь, пожалуйста, спросите. :)

0

Что DefaultCloseOperation имеет Y кадр? Вероятно, это EXIT_ON_CLOSE, поэтому X закрывается вместе с Y. Измените его на DISPOSE_ON_CLOSE или оставьте значение по умолчанию. Он должен работать.

Смежные вопросы