В SwingUtilities
есть два прямых, различных метода для этого, которые обеспечивают одинаковую функциональность (как отмечено в их Javadoc).Они возвращают java.awt.Window
, но если вы добавили свою панель к JFrame
, вы можете безопасно преобразовать ее в JFrame
.
2 прямых и самых простых способа:
JFrame f1 = (JFrame) SwingUtilities.windowForComponent(comp);
JFrame f2 = (JFrame) SwingUtilities.getWindowAncestor(comp);
Для полноты некоторых других способов:
JFrame f3 = (JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, comp);
JFrame f4 = (JFrame) SwingUtilities.getRoot(comp);
JFrame f5 = (JFrame) SwingUtilities.getRootPane(comp).getParent();