所以在这段代码中,一个40x40的方块可以通过调用方向方法在窗口中移动,而我正试图让一个太空船出现而不是方形。无论我尝试什么,它都无法正常工作。
public void paintComponent (Graphics g) {
ImageIcon wallpaper = new ImageIcon("images/JGalagawallpaper.png");
image = wallpaper.getImage();
g.drawImage(image, 400, 400, null);
ImageIcon ship = new ImageIcon("images/galaga.png");
galaga = ship.getImage();
super.paintComponent(g);
Graphics2D graphic = (Graphics2D) g;
graphic.fill(new Rectangle.Double(x, y, 40, 40));
//graphic.drawImage(galaga, x, y, 40, 40);
}
我的问题是,如何让这件事出现?我已经尝试过修补graphic.drawImage,但是这并没有像我希望的那样真正有效。这就是注释掉的代码。
答案 0 :(得分:2)
g.drawImage(image, 400, 400, null);
首先绘制图像。
super.paintComponent(g);
然后调用上面的代码,用于打印面板的背景颜色,从而覆盖图像。上述陈述应该是绘画方法的第一个陈述。
ImageIcon wallpaper = new ImageIcon("images/JGalagawallpaper.png");
绘画方法仅适用于绘画。不要在方法中执行I / O.应该在类的构造函数中读取图像,以便只读取一次,而不是每次重新绘制组件时。
您还需要查看绘制图像的位置的坐标。可能面板不是那么大?
您是否通过显示图片大小来验证图片是否已正确读取?