Java paintComponent()不是´;t在使用ImageLoader包含BuffereImage后工作

Java paintComponent()不是´;t在使用ImageLoader包含BuffereImage后工作,java,image,swing,embedded-resource,paintcomponent,Java,Image,Swing,Embedded Resource,Paintcomponent,我的JPanel中的paintComponent()方法在加载BuffereImage后不起作用。更新方法每20毫秒正常运行一次(swing.timer),但窗口保持白色,没有任何形状或颜色(在我包含图像之前就存在)。如果我只是对BufferedImagetestImage(请参见代码)进行注释,paintComponent方法将再次运行并显示我的游戏屏幕 我多次编写了ImageLoader类,并尝试了不同的路径。大多数错误都会导致错误消息,但现在路径工作正常,可以加载BuffereImage。

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

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

paintComponent()
未运行<代码>更新()正在运行,形状会更改其位置。但是你什么也看不见我尝试在
paintComponent()
中使用
System.out.println()
。根本没有输出

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

图像加载器:

公共类ImageLoader{
公共静态缓冲区映像加载(字符串路径){
试一试{
返回ImageIO.read(ImageLoader.class.getResource(path));
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
}
在我的JPanel课程中:

private BufferedImage testImage=ImageLoader.load(“/res/playerfo.png”);
@凌驾
受保护组件(图形g){
超级组件(g);
/*在这里绘制-->我还没有绘制任何图像。只是一些彩色矩形*/
}
如果我尝试启动程序,只有一个白色窗口。控制台中没有错误消息。如果我尝试输出BuffereImage,则会有一个输出。它不是空的。但如果我不加载图像,而是写入

private BufferedImage testImage=null;
游戏开始了,
paintComponent()
正在完成它的工作。
但是为什么我的paintComponent在
BufferedImage!=null

这是一个静态方法,进行加载可能会导致使用错误的类加载器(引导类加载器,仅用于API的核心部分)。@AndrewThompson我删除了
加载()-方法的
静态
修饰符,创建了ImageLoader的实例,并尝试使用ImageLoader对象加载
BuffereImage
。但结果是一样的。控制台中仍然只有一个白色窗口,没有任何错误日志。这是一个静态方法进行加载,可能导致使用了错误的类加载器(引导类加载器,仅用于API的核心部分)。@AndrewThompson我删除了
加载()-方法
静态
修饰符,创建了ImageLoader的实例,并尝试使用ImageLoader对象加载
BuffereImage
。但结果是一样的。控制台中仍然只有一个白色窗口,没有任何错误日志。