//c:\javaSource\PaintImageTest.java
//c:\javaSource\picture.jpg import java.awt.*;
import javax.swing.*;public class PaintImageTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JPanel() {
public void paintComponent(Graphics g) {
Image img = Toolkit.getDefaultToolkit().getImage("picture.jpg");
g.drawImage(img, 0, 0, 400, 400, null);
}
});
frame.setVisible(true);
}
} 将与java文件位于同一文件夹的picture.jpg画到JPanel上。1.编译后第一次运行: 空窗体,无图像。0
2.关闭并第二次运行: 图像显示完好。
3.关闭并第三次运行: 同2
4.删除当前路径下的所有class文件并重新编译+运行: 同1??????????????????????????????????
//c:\javaSource\PaintImageTest.java
//c:\javaSource\picture.jpg import java.awt.*;
import javax.swing.*;public class PaintImageTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Image img = Toolkit.getDefaultToolkit().getImage("picture.jpg");
g.drawImage(img, 0, 0, 400, 400, null);
}
});
frame.setVisible(true);
}
} 但是,奇怪的现象依然存在。
你可以等图像加载完成以后在repaint一次应该就行了还有就是调用drawImage的时候加个被通知者好像也行,它会在自动加载完成的时候调用repaint方法g.drawImage(img, 0, 0, 400, 400, this);这两种方法肯定能解决你的问题的~
的API