Java 2D图形缓冲区图像填充问题
我仍然习惯于在java上绘制图形,并试图编写一个简单的图形程序,使用缓冲图像绘制背景。然而,奇怪的是,尽管我的jpanel大小设置为1200x400,缓冲图像和fillrect方法也设置为1200x400,但正如我所附的图片中所示,存在一个小“间隙”,因此面板明显大于1200x400,但我不明白为什么?setPreferredSize方法实际上做什么?此外,当我将fillrect方法和BuffereImage更改为1300x500时,不再存在间隙,因此这显然是问题所在。如果有人对我的错误有任何建议,我将不胜感激,谢谢 这是我的密码:Java 2D图形缓冲区图像填充问题,java,graphics,jpanel,paintcomponent,graphics2d,Java,Graphics,Jpanel,Paintcomponent,Graphics2d,我仍然习惯于在java上绘制图形,并试图编写一个简单的图形程序,使用缓冲图像绘制背景。然而,奇怪的是,尽管我的jpanel大小设置为1200x400,缓冲图像和fillrect方法也设置为1200x400,但正如我所附的图片中所示,存在一个小“间隙”,因此面板明显大于1200x400,但我不明白为什么?setPreferredSize方法实际上做什么?此外,当我将fillrect方法和BuffereImage更改为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();
}
}
看看这个答案
您必须将
window.setResizeable(false)放入
beforewindow.pack()代码>。这应该可以解决问题。是的,这已经解决了,谢谢,我没有意识到setresizeable的位置会产生不同