Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何禁用(或隐藏)JFrame上的关闭(x)按钮?_Java_Windows_Swing - Fatal编程技术网

Java 如何禁用(或隐藏)JFrame上的关闭(x)按钮?

Java 如何禁用(或隐藏)JFrame上的关闭(x)按钮?,java,windows,swing,Java,Windows,Swing,我有一个窗口(源自JFrame),我想在某些不可中断的操作期间禁用关闭按钮。我知道我可以通过调用 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 但我想从视觉上说清楚,点击它是没有意义的。如果我理解正确,表明这目前是不可能的。这可能是您将获得的最好结果: setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.NONE); 这将删除整个标题栏,ja

我有一个窗口(源自JFrame),我想在某些不可中断的操作期间禁用关闭按钮。我知道我可以通过调用

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

但我想从视觉上说清楚,点击它是没有意义的。

如果我理解正确,表明这目前是不可能的。

这可能是您将获得的最好结果:

setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
这将删除整个标题栏,java并没有真正指定删除标题栏各个组件的方法

编辑:

可能有一种方法,请查看以下线程:


对于2008年以后参加此活动的人来说,已经有了一个改变,使之成为可能。看

底部的第二个响应显示了如何按名称执行此操作。

请尝试此操作

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)使按钮不做任何事情……但我想从视觉上清楚单击它是没有意义的。”不幸的是,这会删除标题,窗口无法移动或调整大小。