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

Jac*_*ack 1 java graphics swing jframe

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

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

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

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

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

谢谢你的帮助。

WJS*_*WJS 5

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);

Run Code Online (Sandbox Code Playgroud)

现在您的面板将是指定的尺寸。

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

@Override
public void paintComponent(Graphics g) {
   super.paintComponent(g);
   // your code here
}
Run Code Online (Sandbox Code Playgroud)