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

flo*_*rin 24 java windows swing

我有一个窗口(从JFrame派生),我想在某些不可中断的操作中禁用关闭按钮.我知道我可以通过调用使按钮不做任何事情(或在WindowListener中调用处理程序)

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

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

Mal*_*ist 20

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

setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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


bdu*_*riu 10

如果我理解正确,这个错误报告表明目前无法做到这一点.


小智 6

这将帮助您:

frame.setDefaultCloseOperation(0);
Run Code Online (Sandbox Code Playgroud)

  • 为什么这件事在没有任何评论的情况下被否决了?它会根据请求阻止关闭操作。虽然更好地表达为“setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)” (2认同)
  • 当我启动几个 PApplet(处理)时,我不得不使用这三行来避免 java 关闭:`this.jframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE; this.jframe.setUndecorated(true); this.jframe.getRootPane()。 setWindowDecorationStyle(JRootPane.NONE);` (2认同)
  • 被否决是因为最初的问题特别指出,“我知道我可以通过调用 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE) 使按钮不执行任何操作......但我想在视觉上清楚地表明单击它是毫无意义的。” (2认同)

Spe*_*mos 5

对于那些晚于2008年的人来说,有一个变化使得这样做成为可能.看到这个链接

底部的第二个响应显示了如何按名称进行操作.