JLabel如何在鼠标事件中更换ImageIcon?
JLabel是加在JPanel上的。对JPanel鼠标监听 addMouseListener(this);。想在 public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
这些事件中实现JLabel上icon的变换。
JLabel是加在JPanel上的。对JPanel鼠标监听 addMouseListener(this);。想在 public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
这些事件中实现JLabel上icon的变换。
public class TableDemo extends JPanel implements MouseListener {
JLabel calv_label,mylab;
ImageIcon icon2,icon3;
boolean mad = false;
public TableDemo() {
ImageIcon icon2=new ImageIcon("E:/dd的java测试代码/Sstr/off.gif");
ImageIcon icon=new ImageIcon("E:/dd的java测试代码/Sstr/on.gif");
MyLabel calv_label=new MyLabel("Heeo",icon,JLabel.LEFT);
MyLabel mylab=new MyLabel("Hll",icon2,JLabel.LEFT);
this.addMouseListener(this);
add(calv_label);
} public void mouseClicked(MouseEvent e) {
System.out.println("Hweee");
displayMouse();
mad=true;
System.out.println(mad);
setLayout(null);
imgView();
// repaint();
} public void imgView(){
calv_label.setIcon(icon2);
}
}
运行:
Hweee
true
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at TableDemo.imgView(TableDemo.java:278)
at TableDemo.mouseClicked(TableDemo.java:104)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)