我正在用Java开发小型游戏,需要显示图片。此图像位于磁盘上的sprite文件夹中。基本上,我有这个结构:
public class mainClass extends JFrame {
private int imageType; // The type of the image
public mainClass() {
windowContent = new WindowContent(gameBoard, nextPiece);
this.setContentPane(windowContent);
while(!gameOver) {
this.imageType = otherClass.getImageType(); // Short version
this.repaint();
}
}
class WindowContent extends JPanel {
private int imageType;
public WindowContent(int imgType) {
this.imageType = imgType;
}
public void paintComponent(Graphics g) {
try {
BufferedImage img = ImageIO.read("srprites/" + this.imageType + ".png");
g.drawImage(img, 200,200, null);
} catch .......
}
}
}
问题是第一张图像正常显示,但是当可变内容更改时,什么也没发生。第一张图片保持不变。我尝试了很多操作,例如移动
this.setContentPane()
,但没有任何效果。有没有办法使它正常工作?谢谢。
最佳答案
WindowContent中的imageType
仅在构造函数中分配。通过在主类中更改imageType
的值,您将不会在WindowContent中更改imageType
。您需要直接在WindowContent上设置imageType
。
代替
while(!gameOver) {
this.imageType = otherClass.getImageType(); // Short version
this.repaint();
}
你需要做
while(!gameOver) {
windowContent.setImageType(otherClass.getImageType()); // Short version
this.repaint();
}
当然,将设置器添加到windowContent