Есть ли способ получить ссылку на текущий кадр в Java? - PullRequest
4 голосов
/ 02 февраля 2011

У меня есть класс строки меню (MenuBarGUI), который я вставил во все остальные мои классы, и мне нужно знать, могу ли я закрыть текущий JFrame, в котором он содержится, с помощью параметра в меню. Обычно я мог бы вызвать setVisible (false), а затем dispose (), но поскольку строка меню не имеет ссылки на текущий кадр, я не могу этого сделать. Есть ли способ сделать это?

Ответы [ 3 ]

4 голосов
/ 02 февраля 2011

если ваш класс MenuBarGUI расширяет JMenuBar, вы можете использовать метод getTopLevelAncestor , чтобы получить окно строки меню.

1 голос
/ 02 февраля 2011

getParent() получит родительский контейнер. С помощью этого метода вам придется выполнить кастинг. Более идеальным вариантом было бы использование строки меню с интерфейсом close.

Вот пример:

   JFrame frame = new JFrame();
   JMenuBar bar = new JMenuBar();
   frame.setJMenuBar(bar);
   if(bar.getParent().getParent().getParent() instanceof JFrame){
       System.out.println(bar.getParent().getParent().getParent());
   }
0 голосов
/ 03 октября 2013

Ни один из вышеперечисленных подходов не сработал для меня.

Поскольку мне нужен только непосредственный родительский элемент панели, доступ к ним осуществляется напрямую с помощью супер-вызова: super.setTitle («Новый заголовок кадра») и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...