gpt4 book ai didi

java - 如何在 JFrame 中删除标题栏

转载 作者:IT老高 更新时间:2023-10-28 20:39:54 24 4
gpt4 key购买 nike

我正在使用以下代码进行练习,

http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/BorderLayoutDemoProject/src/layout/BorderLayoutDemo.java

我也加了

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 中抛出异常:该框架是可显示的。

我该怎么办?

谢谢。

最佳答案

可以通过调用 setUndecorated(true) 删除标题栏在 FrameJFrame 实例上,即将“未装饰”属性设置为 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)的文档:

A frame may have its native decorations (i.e. Frame and Titlebar) turned off with setUndecorated. This can only be done while the frame is not displayable. The method will throw a runtime exception: IllegalComponentStateException if the frame is displayable.

但是,you can call Window#dispose()FrameJFrame 上,然后再次打包,这会导致 JFrame 内的组件布局被刷新。

关于java - 如何在 JFrame 中删除标题栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8701716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com