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
}
我正在 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
}