swing是自动支持双缓冲的,你的绘图代码应该加在public void paintComponent(Graphics g) {
  super.paintCumponent(g);  // add your code here.
  g.drawImage(...);
}否则在重绘的时候就有可能被覆盖掉。这点和AWT不同。

解决方案 »

  1.   

    我把代码这样写了,可是还是不行啊class ImagePanel extends javax.swing.JPanel
    {
      private Image mainMapImage; //主地图
      private Image eagleMapImage; //鹰眼地图  public ImagePanel(){
      }/*
      public void paint(Graphics g){
        this.loadPic();
      }
    */
      public void paintComponent(Graphics g) {
        System.out.println("paintComponent");
        super.paintComponent(g);
        loadPic();  }
      public void loadPic()  {
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(mainMapImage, 0);
        tracker.addImage(eagleMapImage, 1);
        try {
          tracker.waitForID(0);
          tracker.waitForID(1);
        } catch (InterruptedException ex) {    }
        this.getGraphics().drawImage(mainMapImage,1,1,300,200,this);
        this.getGraphics().drawImage(eagleMapImage,1,200,100,80,this);
      }  public void setMainMapImage(Image mainMapImage) {
        this.mainMapImage = mainMapImage;
      }
      public void setEagleMapImage(Image eagleMapImage) {
        this.eagleMapImage = eagleMapImage;
      }
    }
      

  2.   

    public void setMainMapImage(Image mainMapImage) {
        this.mainMapImage = mainMapImage;
      }
      public void setEagleMapImage(Image eagleMapImage) {
        this.eagleMapImage = eagleMapImage;
      }这是别的函数里调用的么?应该不会有问题才对,