//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??????????????????????????????????

解决方案 »

  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);
      }
    } 但是,奇怪的现象依然存在。
      

  2.   

    图像加载问题,可能是图像尚未加载完成,所以就没有画出来,
    你可以等图像加载完成以后在repaint一次应该就行了还有就是调用drawImage的时候加个被通知者好像也行,它会在自动加载完成的时候调用repaint方法g.drawImage(img, 0, 0, 400, 400, this);这两种方法肯定能解决你的问题的~
      

  3.   

    给你看下g.drawImage(img, 0, 0, 400, 400, this);
    的API