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

时间:2008-11-09 18:26:10

标签: java windows swing

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

使按钮不做任何事情(或在WindowListener中调用处理程序)
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

但我想直观地说明点击它是没有意义的。

6 个答案:

答案 0 :(得分:19)

这可能是你得到的最好的:

setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);

这将删除整个标题栏,java并没有真正指定删除标题栏的各个组件的方法

编辑:

可能有办法,看看这些主题:

答案 1 :(得分:10)

如果我理解正确,this bug report表示目前无法做到这一点。

答案 2 :(得分:5)

对于那些晚于2008年的人来说,有一个变化可以做到这一点。见this link

底部的第二个回复显示了如何按名称进行。

答案 3 :(得分:2)

这将对您有所帮助:

frame.setDefaultCloseOperation(0);

答案 4 :(得分:0)

请试试这个

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);
            }
      }
    });

答案 5 :(得分:0)

要使其简单消失,请尝试以下操作:

setUndecorated(true);