我有Main类,StartFrame扩展了JFrame,UserPanel扩展了我添加到StartFrame的JPanel。我在UserPanel中有按钮,当我按下按钮时如何关闭StartFrame(我熟悉事件处理它不是问题,问题是如何将信息发送到StartFrame)。或者最好只更改框架的面板(如果需要,可以重复使用)并重复使用它?
答案 0 :(得分:5)
如果要关闭包含组件的窗口,则需要对该窗口的引用,而SwingUtilities有一个方法可以帮助您实现此目的:getWindowAncestor(Component c)
。然后你可以在返回的窗口上调用dispose()
。
即,
Window win = SwingUtilities.getWindowAncestor(myJPanel);
win.dispose();
请注意,如果你使用它来结束你的GUI,这很好,但如果你的目标是交换视图,那么更好的建议不是交换Windows,而是让主JFrame可见但是交换它使用CardLayout显示的组件。
答案 1 :(得分:1)
按钮已在画面上(右上角,此处)。只需在构建它时调用JFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
,它就会按照用户的期望工作。
不要扩展框架或面板,而只是创建和使用它们。