【问题标题】:How to remove title bar in JFrame如何在 JFrame 中删除标题栏
【发布时间】:2012-01-31 20:52:39
【问题描述】:

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

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

我该怎么办?

谢谢。

【问题讨论】:

    标签: java swing jframe titlebar


    【解决方案1】:

    好吧,createAndShowGUI() 中的以下代码 sn-p 对我有用:

    JFrame frame = new JFrame("BorderLayoutDemo");
    frame.setUndecorated(true); // Remove title bar
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    addComponentsToPane(frame.getContentPane());
    frame.pack();
    frame.setVisible(true);
    

    请注意,我不确定您通过手动将未实现帧的大小设置为其最大大小(最初为 (0, 0))来尝试实现什么。

    【讨论】:

    • 是的,谢谢!删除setSize后,它起作用了。但我不知道应该如何将 JFrame 实例的大小设置为 (0, 0) ?
    【解决方案2】:

    可以通过在FrameJFrame 实例上调用setUndecorated(true) 来移除标题栏,即将“未修饰”属性设置为true。这会同时删除标题栏周围的框架。

    这是问题所需的代码:

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Already there
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setUndecorated(true); // <-- the title bar is removed here
    

    在一个包装好的JFrame

    必须在直接或间接调用pack() 之前调用setUndecorated(true),例如通过setVisible(true)

    显然打包后无法去掉标题栏,这是Frame#setDecorated(boolean)的文档:

    框架可以使用setUndecorated 关闭其原生装饰(即框架和标题栏)。这只能在框架不可显示时完成。该方法将抛出运行时异常:IllegalComponentStateException 如果框架是可显示的。

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

    【讨论】:

    • 这仅在您希望框架最大化时才有效。如果您不这样做,请确保在打包框架之前设置未装饰(true)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多