Java Swing 打包窗口错误

标签 java swing

我正在用 Java 制作类似 Scorched Earth 的游戏(用于我的考试项目 :D),但我遇到了这个问题。我正在绘制一个窗口 (JFrame),将布局设置为 BorderLayout,应用扩展的 JPanel,然后打包窗口,但打包后,它在左侧和底部边框处显示一些扩展的空白区域。

这是我的主课:

public class Main {
    public static void main(String[] args) {
        javax.swing.JFrame frame = new javax.swing.JFrame("game title");
        panel p = new panel(new java.awt.Dimension(512, 512));
        frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new java.awt.BorderLayout());
        frame.getContentPane().add(p, java.awt.BorderLayout.CENTER);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
    }
}

panel 是我的 JPanel 类,它在构造函数中将其首选大小设置为参数 (512x512)。我已经在 Windows 和 Linux 上对此进行了测试,并且在这两个地方都出现了错误,并且白色间隙的大小因操作系统而异。

这是我的面板类:

class panel extends javax.swing.JPanel{
    panel(java.awt.Dimension size){
        setPreferredSize(size);
    }
    public void paint(java.awt.Graphics g){
        g.setColor(java.awt.Color.BLUE);
        g.fillRect(0, 0, 512, 512);
    }
}

请帮忙!

最佳答案

我试图在没有你的 panel 类的情况下重现这个(它需要一个更好的名字并且至少应该使用 CamelCase 命名):

import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("game title");
        JPanel p = new JPanel();
        p.setPreferredSize(new java.awt.Dimension(512, 512));
        p.setBackground(java.awt.Color.BLUE);
        frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new java.awt.BorderLayout());
        frame.getContentPane().add(p, java.awt.BorderLayout.CENTER);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
    }
}

这会生成一个带有蓝色 512x512 面板且没有不同颜色边框的窗口。所以问题一定出在您的 panel 类上。

关于Java Swing 打包窗口错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621685/

相关文章:

java - gradle junit 和错误 : cannot find symbol

java - Java Swing JButton 在表单更新之前必须单击两次

java - 读取字符串数组

java - 需要关于如何在面板上方插入小文本短语的想法

java - 由一个 EDT 处理两个 GUI 框架

java - 检查单实例java程序

java - 无法在java中将客户端连接到服务器

java - 我在哪里可以找到 RCP 产品中的系统输出打印件?

Javafx从网格 Pane 中的文本字段获取文本

java - 如何避免java中自引用类型安全接口(interface)的参数类型警告?