paintComponent方法不是绘制图像

时间:2017-06-11 09:05:39

标签: java graphics paintcomponent drawimage

在将其合并到程序中之前,我正习惯使用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();
}
}

1 个答案:

答案 0 :(得分:0)

解决问题的一个小问题是在构造函数的底部调用。

this.revalidate();
this.repaint();

但是,我建议您看一下模型 - 视图 - 控制器如何在模型中发生更改时更新视图。可以找到一个示例here