【问题标题】:Does JFrame not accurately display specified width and height values?JFrame 是否无法准确显示指定的宽度和高度值?
【发布时间】:2020-11-22 08:49:29
【问题描述】:

我正在用 Java 构建一个简单的 2D 游戏。

我正在使用 JFrame 类,但我认为宽度和高度不是我指定的,或者图形不正确。

这是我的代码的一些 sn-ps:

public final static int WIDTH = 600, HEIGHT = 900;
JFrame frame = new JFrame();
frame.setSize(WIDTH, HEIGHT);
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT - 10);

JFrame 显示黑色背景。然而,根据我给 fillRect 函数的参数,在框架的底部仍然应该有一个 10px 高的白色条子。不是这种情况。白条只有在从框架高度减少 30 像素后才真正开始显示。

感谢您的帮助。

【问题讨论】:

标签: java swing graphics jframe


【解决方案1】:

JFrame 大小包括边框,因此您需要考虑它们。为了便于处理,不要指定 JFrame 的宽度和高度。我建议执行以下操作。

JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(width,height));
frame.add(panel);
// add other components in the panel
frame.pack();
// center on screen.
frame.setLocationRelativeTo(null);
frame.setVisible(true);

现在您的面板将具有指定的大小。

注意,如果您要绘画,请确保在 JPanel 中覆盖 paintComponent(Graphics g) 并在那里进行绘画。

@Override
public void paintComponent(Graphics g) {
   super.paintComponent(g);
   // your code here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多