JFrame setPreferredSize会导致屏幕尺寸略大

Sea*_*ing 1 java swing

我最初使用的是setSize,但由于java边框和标题空间,导致屏幕内容略大于屏幕.所以我使用了setpreferredSize,现在屏幕尺寸有点太大了.在我的内容的右侧和底侧留下一个空间.

在我的JFrame中:

add(new Board());
    setTitle("Rougebot");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //setSize(600, 800);
    //getContentPane().setPreferredSize(new Dimension(600,800));
    pack();
    setLocationRelativeTo(null);
    setVisible(true);
    setResizable(false);
Run Code Online (Sandbox Code Playgroud)

在我的董事会(JPanel)

setPreferredSize(new Dimension(600,800));
Run Code Online (Sandbox Code Playgroud)

Jas*_*n C 8

致电setResizable(false) 之前致电pack():

add(new Board());
setTitle("Rougebot");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false); // <-- here
pack();
setLocationRelativeTo(null);
setVisible(true);
Run Code Online (Sandbox Code Playgroud)

并继续设置首选大小Board,如原始帖子中的示例所示.

在Windows中,固定边框比可调整大小的边框更薄,如果计算大小然后设置为固定大小,则更改窗口边框宽度,在Windows中,窗口边框宽度会导致客户端区域增加,外部尺寸保持固定.

  • 你是一个程序员的绝对野兽.这解决了它.我会赞成你,但我显然还没有足够的代表.但是说真的,谢谢! (4认同)
  • 我还想提到,为了完全解决我的问题,我还必须用myJFrame.getRootPane()。setPreferredSize或myJFrame.getContentPane()。setPreferredSize()替换myJFrame.setPreferredSize()。通过结合上述Jason CI解决方案,我的JFrame窗口达到了完全正确的尺寸。 (2认同)