JFrame 是否不能准确显示指定的宽度和高度值?

Does JFrame not accurately display specified width and height values?

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

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

以下是我的一些代码片段:

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 像素后才真正开始显示。

感谢您的帮助。

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
}