Java - закрывающий кадр

Из первого кадра я вызываю другой кадр:

frame2 fr2 = new frame2();
fr2.setVisible(true);

а когда пытаюсь закрыть таким же образом - никакой реакции

frame2 fr2 = new frame2();
fr2.setVisible(false);

Все что я делаю с помощью двух кнопок на первом кадре


person Edgar Buchvalov    schedule 13.09.2011    source источник


Ответы (1)


frame2 fr2 = new frame2();
fr2.setVisible(false);

тем самым вы создаете новый экземпляр frame2 и скрываете его, и вы ничего не делаете с экземпляром frame2, который вы уже создали, и, следовательно, no reaction

Что вам нужно сделать, так это создать поле класса или что-то подобное для хранения ссылки на экземпляр frame2, который вы создаете сначала (когда вы его показываете), а затем использовать ту же ссылку и вызывать setVisible(false).

class frame1{
    ...

    private frame2 frame2ref;
    ....


    void foo()
    {
       ....
       frame2ref = new frame2();
       frame2ref .setVisible(true);
       // create and save reference and show frame.
       ...
    }

    void bar()
    {
        ...
        frame2ref.setVisible(false);
        // retrieve reference and hide frame. 
        ...

    }

}
person Bala R    schedule 13.09.2011