Java 如何禁用(或隐藏)JFrame上的关闭(x)按钮?
我有一个窗口(源自JFrame),我想在某些不可中断的操作期间禁用关闭按钮。我知道我可以通过调用Java 如何禁用(或隐藏)JFrame上的关闭(x)按钮?,java,windows,swing,Java,Windows,Swing,我有一个窗口(源自JFrame),我想在某些不可中断的操作期间禁用关闭按钮。我知道我可以通过调用 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 但我想从视觉上说清楚,点击它是没有意义的。如果我理解正确,表明这目前是不可能的。这可能是您将获得的最好结果: setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.NONE); 这将删除整个标题栏,ja
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
但我想从视觉上说清楚,点击它是没有意义的。如果我理解正确,表明这目前是不可能的。这可能是您将获得的最好结果:
setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
这将删除整个标题栏,java并没有真正指定删除标题栏各个组件的方法
编辑:
可能有一种方法,请查看以下线程:
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
e.getWindow().setVisible(false);
try {
wait();
} catch (InterruptedException ex) {
Logger.getLogger(WindowsActions.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
这将帮助您:
frame.setDefaultCloseOperation(0);
要简单地使它们消失,请尝试以下操作:
setUndecorated(true);
只是一个建议,你可能会考虑避免由于可用性差而导致的GUI行为。我同意Josh的观点。至少映射到一个显示“操作正在进行…”的弹出窗口,带有“取消”(隐藏弹出窗口)和“无论如何关闭”(强制退出)按钮。当后台操作完成时,如果弹出窗口仍然可见(即,他们没有单击“取消”),应用程序将关闭。与Swing中的许多其他内容一样,这也是一个完整的PITA。5年后,底部的第二个响应是现在的哪一个?可以链接到它(底部的“共享”链接)或引用核心原则吗?另外,你能再详细一点你所指的“改变”吗?为什么他妈的没有任何评论就被否决了?它会根据请求阻止关闭操作。尽管更好地表达为
setDefaultCloseOperation(JFrame.DO\u NOTHING\u ON\u CLOSE)
我必须使用这三行代码,以避免在启动几个PApplet(处理)时java关闭:this.JFrame.setDefaultCloseOperation(JFrame.DO\u NOTHING\u ON\u CLOSE;this.JFrame.setUndercorated(true);this.JFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
正如Tomas Zato所说,这有助于我被否决;)因为最初的问题明确地说:“我知道我可以通过调用setDefaultCloseOperation(JFrame.do\u NOTHING\u ON\u CLOSE)使按钮不做任何事情……但我想从视觉上清楚单击它是没有意义的。”不幸的是,这会删除标题,窗口无法移动或调整大小。