是不是Label更新的问题啊??
我的路径不变,就文件不停在变,而且我保证是在刷新Label之前文件就更新了

解决方案 »

  1.   

    因为我要不停的生成临时文件来覆盖那个目录下的testout.gif,然后不断调用setIcon方法来显示图片到label上
      

  2.   

    如何刷新啊,我每次都setIcon怎么都不行
      

  3.   

    package pinglun;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    class Rect extends JLabel
    {
      ImageIcon ima;
      String path = "d://11-5.jpg";
      int tuo_kx=0, tuo_ky=0, panel_x=300, panel_y=225, panel_w=205, panel_h=205;  public Rect()
      {
        addMouseMotionListener(new label_jLabel2_mouseMotionAdapter(this));
        addMouseListener(new label_jLabel2_mouseAdapter(this));
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }  public void repaint(String path){
           this.path=path;
           repaint();
      }
      public void paint(Graphics g) {
       ima=new ImageIcon(path);
        g.drawImage(ima.getImage(),0,0,this.getWidth(),this.getHeight(),Color.BLUE,this);  }   void jLabel2_mousePressed(MouseEvent e) {
           tuo_kx = e.getX();
           tuo_ky = e.getY();
           System.out.println(tuo_kx); }
      void jLabel2_mouseDragged(MouseEvent e) {
        int jx = e.getX();
        int jy = e.getY();
             setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));         if (panel_x + jx - tuo_kx <= 0) {
               panel_x = 0;
             }
             else {
               panel_x -= (tuo_kx - jx);
             }
             if (panel_y + jy - tuo_ky <= 0) {
               panel_y = 0;
             }
             else {
               panel_y -= (tuo_ky - jy);
             }
           setBounds(new Rectangle(panel_x, panel_y, panel_w, panel_h));
      }
      private void jbInit() throws Exception {
        this.setBorder(BorderFactory.createLineBorder(Color.black));
      }}
    class label_jLabel2_mouseMotionAdapter extends java.awt.event.MouseMotionAdapter {
      Rect adaptee;  label_jLabel2_mouseMotionAdapter(Rect adaptee) {
        this.adaptee = adaptee;
      }
      public void mouseDragged(MouseEvent e) {
        adaptee.jLabel2_mouseDragged(e);
      }
    }class label_jLabel2_mouseAdapter extends java.awt.event.MouseAdapter {
      Rect adaptee;  label_jLabel2_mouseAdapter(Rect adaptee) {
        this.adaptee = adaptee;
      }
      public void mousePressed(MouseEvent e) {
        adaptee.jLabel2_mousePressed(e);
      }
    }
    将它加到JFrame试试