概述
小编典典
获取顶层窗口:
public void actionPerformed(ActionEvent e) {
JComponent comp = (JComponent) e.getSource();
Window win = SwingUtilities.getWindowAncestor(comp);
win.dispose();
}
确保已将JFrame的默认关闭操作设置为JFrame.DISPOSE_ON_CLOSE(首选)或JFrame.EXIT_ON_CLOSE(首选)。
如果有可能会从JMenuItem调用此方法,那么除非您首先测试组件的父级是JPopupMenu还是JToolBar,否则它将不起作用。如果是这样,那么您应该使用更健壮的解决方案,例如可以在java-
swing-tips上找到,特别是以下代码:
class ExitAction extends AbstractAction {
public ExitAction() {
super("Exit");
}
@Override public void actionPerformed(ActionEvent e) {
JComponent c = (JComponent) e.getSource();
Window window = null;
Container parent = c.getParent();
if (parent instanceof JPopupMenu) {
JPopupMenu popup = (JPopupMenu) parent;
JComponent invoker = (JComponent) popup.getInvoker();
window = SwingUtilities.getWindowAncestor(invoker);
} else if (parent instanceof JToolBar) {
JToolBar toolbar = (JToolBar) parent;
if (((BasicToolBarUI) toolbar.getUI()).isFloating()) {
window = SwingUtilities.getWindowAncestor(toolbar).getOwner();
} else {
window = SwingUtilities.getWindowAncestor(toolbar);
}
} else {
Component invoker = c.getParent();
window = SwingUtilities.getWindowAncestor(invoker);
}
if (window != null) {
//window.dispose();
window.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSING));
}
}
}
2020-11-23
最后
以上就是开朗棉花糖为你收集整理的java 关闭jpanel_Java中的关闭窗口(JPanel)的全部内容,希望文章能够帮你解决java 关闭jpanel_Java中的关闭窗口(JPanel)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复