Java - закрывающая рамка - PullRequest
       3

Java - закрывающая рамка

1 голос
/ 13 сентября 2011

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

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

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

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

Все, что я делаю, используя двакнопки на первом кадре

1 Ответ

4 голосов
/ 13 сентября 2011
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. 
        ...

    }

}
...