在将paintComponent()
方法合并到我的程序中之前,我正在尝试习惯使用该方法。但是,每当我尝试将图像绘制到JPanel
时,它都不起作用。我把代码放在下面。任何帮助将不胜感激。谢谢。
public class ExperimentGame extends JPanel{
Image image;
public ExperimentGame(){
JFrame frame = new JFrame();
SwingUtilities.isEventDispatchThread();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setSize(500,500); //my edit
this.setBackground(Color.WHITE);
frame.setVisible(true);
try {
image = ImageIO.read(this.getClass().getResource("spaceship (0).png"));
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 50, 50, null);
}
}
public class ExperimentMain {
public static void main(String[] args) {
ExperimentGame game = new ExperimentGame();
}
}
解决你的问题的一个小小的技巧是在构造函数的底部调用。
this.revalidate();
this.repaint();
但是,我建议您看看如何在模型中发生更改时使用模型-视图-控制器来更新视图。可以在此处找到一个示例。