有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用ImageLoader包含BuffereImage后,java paintComponent()无法工作

我的JPanel中的paintComponent()方法在加载BuffereImage后不起作用。更新方法每20ms(swing.timer)正常运行一次,但窗口保持白色,没有任何形状或颜色(在我包含图像之前就存在)。如果我只是对BufferedImage{}(参见代码)进行注释,paintComponent方法将再次运行并显示我的游戏屏幕

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

paintComponent()未运行Update()正在运行,形状会更改其位置。但是你什么也看不见我尝试在paintComponent()中使用System.out.println(),但是控制台仍然是空的。根本没有输出

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

图像加载器:

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 */
}

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

private BufferedImage testImage = null;

游戏开始了paintComponent()正在做它的工作。 但是为什么我的paintComponent在BufferedImage != null上“有问题”


共 (0) 个答案