代码如下:
package login;import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class Checking extends JFrame implements MouseListener{

/**
 * 
 */

private static final long serialVersionUID = 1L;
ImageIcon pic=new ImageIcon("E://Demo//picture//checkcode.jpg");
JLabel l=new JLabel(pic);
JLabel changecode=new JLabel("看不清楚,换一张");
   public Checking(){
   this.setLayout(null);
   l.setBounds(0, 0, 200, 100);
   changecode.setBounds(220,35,100,40);
   this.add(l);
   this.add(changecode);
   this.setSize(350, 200);
   this.setVisible(true);
   this.setResizable(false);
   this.setLocationRelativeTo(null);
  
   changecode.addMouseListener(this);
 
   
   }
public static void main(String[] args){ new Checking();
}public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==changecode){
  new MyCheckCode(); 
  this.dispose();
      new Checking();
}
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==changecode)
changecode.setBackground(Color.red);
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub

}
}
问题:
点击changecode确实发生了MyCheckCode();也发生了Checking();但是l中的图片没有变,不知为何java图片

解决方案 »

  1.   

    为什么呢,因为你需要手动调用一下validate()或者是repaint(),或者两个方法都调用一下。至于原因嘛,你看看api就知道了
      

  2.   

    我擦,仔细一看代码,ImageIcon pic=new ImageIcon("E://Demo//picture//checkcode.jpg");永远都是这张,你告诉我怎么变?
      

  3.   

    点击changcode时重新new了一下啊
      

  4.   

    你重新new了,这个没错,但是你的图片路径变了吗?根本没有变,还是原来那张嘛。所以你创建的图片永远都是同一张,不会变的