从JFrame中删除标题栏后保留边框

时间:2012-04-12 09:24:47

标签: java swing user-interface jframe

我想从JFrame中删除标题栏,所以我在那个JFrame上调用setUndecorated(true),但是我想在JFrame上保留边框(漂亮渐变),当装饰打开时它会出现?我能这样做吗?比如为LookAndFeel默认获取边框实例或者自己制作渐变边框?

2 个答案:

答案 0 :(得分:2)

默认系统LookAndFeel窗口边框由系统绘制,而不是Java,因此无法单独从窗口中删除标题栏。你可以做的唯一事情就是不自己设计窗口并自己绘制边框(是的,要完全复制系统边框,你必须付出很多努力)。

也许SWT可以提供类似的内容,但要使用它,你将不得不放弃标准的Swing。

答案 1 :(得分:1)

您可以通过创建JPanel并为其添加边框,然后将面板设置为框架的内容来直观地完成此操作。

public class Undecorated {

  public static void main(String[] args) {
    JFrame frame = new JFrame();

    JPanel borderedPanel = new JPanel();

    //Use any border you want, eg a nice blue one
    borderedPanel.setBorder(BorderFactory.createMatteBorder(5, 5, 5, 5, Color.BLUE));

    frame.setContentPane(borderedPanel);
    frame.setUndecorated(true);
    frame.setSize(new Dimension(200, 200));
    frame.setVisible(true);
  }

}