我正在使用以下代码进行练习,
我也加
frame.setSize(frame.getMaximumSize());
在 createAndShowGUI() 方法中,
更重要的是我希望这个窗口没有标题栏、关闭和最小化按钮。
我尝试了以下代码,
frame.setUndecorated(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果我在 pack() 之前添加了此代码,它会进入 infine 循环,并在线程“AWT-EventQueue-0”java.lang.NegativeArraySizeException 中出现此异常异常
如果我添加了 createAndShowGUI() 方法的最后一行,它会在线程“AWT-EventQueue-0”中抛出异常 java.awt.IllegalComponentStateException: The frame is displayable。
我该怎么办 ?
谢谢。
标题栏可以通过调用被移除
setUndecorated(true)
的Frame
或JFrame
实例,即通过设置“未修饰的”属性true
。这将删除标题栏和周围的框架。这是问题所需的代码:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Already there frame.setExtendedState(JFrame.MAXIMIZED_BOTH); frame.setUndecorated(true); // <-- the title bar is removed here
在一个包装好的
JFrame
setUndecorated(true)
必须在pack()
被直接或间接调用之前调用,例如通过setVisible(true)
。显然在执行打包后无法删除标题栏,这是以下文档
Frame#setDecorated(boolean)
:但是,你可以调用
Window#dispose()
的Frame
或JFrame
,然后重新包装一下,这会导致部件的布局内JFrame
被刷新。