在将BufferedImages包含在ImageLoader中之后,paintComponent()无法正常工作

时间:2019-08-19 14:25:16

标签: java image swing embedded-resource paintcomponent

我的paintComponent()中的JPanel方法在加载BufferedImages之后不起作用。更新方法每20毫秒(swing.timer)正常运行,但是窗口保持白色,没有任何形状或颜色(在我包含图像之前就已经存在)。如果我只是对BufferedImage testImage(请参见代码)发表评论,则paintComponent方法将再次运行并显示我的游戏屏幕。

我多次编写ImageLoader类,并尝试了不同的路径。它们中的大多数导致了错误消息,但是现在路径正常工作并且可以加载BufferedImages。但是现在,窗户仍然只是白色。

paintComponent()未运行。 Update()正在运行,形状改变了位置。但是你什么都看不到。 我尝试System.out.println()中使用paintComponent(),但控制台也保持空白。完全没有输出。

我不知道代码的哪一部分导致了错误,但是在这里您可以说ImageLoader类中的paintComponent()JPanel(至少有意义代码)

ImageLoader:

public class ImageLoader {

    public static BufferedImage load(String path) {
        try {
            return ImageIO.read(ImageLoader.class.getResource(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

在我的JPanel课堂上:

private BufferedImage testImage = ImageLoader.load("/res/playerufo.png");

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    /* Draw here --> I am not drawing any images yet. Just some colored rectangles */
}

如果我尝试启动程序,则只有一个白色窗口。控制台中没有错误消息。如果我尝试输出BufferedImage,则有一个输出。它不为空。但是,如果我不加载图像而写

private BufferedImage testImage = null;

游戏开始,paintComponent()正在完成任务。 但是为什么我的paintComponent出现BufferedImage != null问题?

0 个答案:

没有答案