java - 窗口大小小于应有的大小

标签 java swing jframe

好的,我已经得到了这个带有屏幕的 JFrame。我已将大小设置为 800 x 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);
    }
}

在 screen 类中,paint 方法在边框应该所在的位置周围绘制了一个框:

//Draw border
g.setColor(Color.RED);
g.drawRect(1, 1, 799, 799);

当我运行它时,窗口比框小,底部和右侧被切掉。

enter image description here enter image description here

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

我意识到我画的盒子每边都小了 1 个像素,但差异远不止 2 个像素。

最佳答案

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

结帐 this questionthis question更详细的解释

布局管理器还会覆盖您在 Screen 组件上设置的大小属性。无论哪种情况,您都应该覆盖 Screen 类的 getPreferredSize 方法

此外,您不应该依赖魔数(Magic Number)或关于组件实际大小的假设,而应该使用 getWidthgetHeight(我知道,这只是为了演示目的)

关于java - 窗口大小小于应有的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114834/

相关文章:

java - 寻找在 Java 中检测 AWS Lambda 超时(超时前几秒)并进行测试的方法

java - 如何在 Open API 3.0 中为 GET API 定义 map 对象

java - SwingerWorker 在小程序中用于角色动画?

java - 为什么当我们对添加到 JScrollPane 的 JPanel 使用 setPreferredSize 时它会向 JScrollPane 显示滚动条

java - 将变量从 JFrame 传递到另一个 JFrame

java - 如果检查员未找到错误消息,如何在网站开发选项中找到错误消息

java - jFrame 无法正确打开或显示内容

java - JFrame 重绘();错误

java - main 的 JPanel 未从另一个类更新

JPanel 的 Java awt 边框不起作用