我仍然习惯在java上绘制图形,并且我正在尝试编写一个使用缓冲图像绘制背景的简单图形程序。然而,奇怪的是,即使我的jpanel尺寸设置为1200x400,缓冲图像和填充方法也是如此,因此您可以在我附加的图片中看到一个小的“间隙”,因此面板明显大于1200x400但是我不明白为什么? setPreferredSize方法实际上做了什么?此外,当我将fillrect方法和bufferedimage更改为1300x500时,不再存在差距,因此这显然是个问题。如果有人对我出错的地方有任何建议,我将不胜感激,谢谢
这是我的代码:
public class Q2 extends JPanel {
private BufferedImage image;
public static void main(String[] args) {
Q2 test = new Q2();
}
public Q2() {
this.init();
}
private void init() {
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setContentPane(this);
this.setPreferredSize(new Dimension(1200,400));
refreshCanvas();
window.pack();
window.setVisible(true);
window.setResizable(false);
}
public void paintComponent(Graphics g) {
Graphics2D twoD = (Graphics2D) g;
twoD.drawImage(image,0,0,null);
}
private void refreshCanvas() {
image = new BufferedImage(1200,400,BufferedImage.TYPE_INT_ARGB);
Graphics2D twoD = image.createGraphics();
twoD.setColor(Color.BLACK);
twoD.fillRect(0, 0, 1200,400);
repaint();
}
}