窗口尺寸小于应有的尺寸

Sha*_*rph 3 java swing jframe

好吧,所以我有这个带有屏幕的JFrame.我已将大小设置为800乘800.但是窗口创建的小于此值.这不是任务栏的问题,因为它不是全尺寸.

package sharph;

import java.awt.Dimension;
import javax.swing.JFrame;

public class Main extends JFrame {

    public static String Title = "Game 1";

    public static Dimension screenSize = new Dimension(800,800);

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

        frame.setTitle(Title);
        frame.setSize(screenSize);
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

        Screen screen = new Screen();
        screen.setSize(screenSize);

        frame.add(screen);
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

在屏幕类中,paint方法在边框应该是的位置绘制一个框:

//Draw border
g.setColor(Color.RED);
g.drawRect(1, 1, 799, 799);
Run Code Online (Sandbox Code Playgroud)

当我运行时,窗口小于盒子,底部和右侧被切断.

在此输入图像描述 在此输入图像描述

请注意我手动重新调整大小的第二张图片以显示边框差异.

我意识到我已经在每侧绘制了1个像素的小盒子,但差异远远超过2个像素.

Mad*_*mer 5

发生这种情况是因为内容需要挤压到框架的大小减去其边框.

查看此问题此问题以获取更详细的说明

布局管理器还会覆盖您在Screen组件上设置的size属性.在任何一种情况下,您都应该重写该类的getPreferredSize方法Screen

此外,你不应该依赖关于组件实际大小的幻数或假设,而应该使用getWidthgetHeight不是(我知道,它仅用于演示目的)