为什么这么小也出错呢?

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:34:16
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class text {
public static void main(String args[]){
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("A or B");
b.add(c);a.add(b);
click d = new click();
c.addMouseListener(d);
a.setVisible(true);}}

class click implements MouseListener{
public void mousePressed (MouseEvent e){}
public void mouseExited (MouseEvent e){
c.setText("A");}
public void mouseEntered (MouseEvent e){
c.setText("B");}
public void mouseReleased (MouseEvent e){}
public void mouseClicked (MouseEvent e){}}
进入就B,离开就A,为什么这么简单都会出错呢?
pur_e大侠还在否,想再请问下怎么把c搞成全局变量啊,谢谢了!

c.setText("A");
你这里调用的是类外的变量,除非是全局变量,要不是不可能的,可以改成下面这样,通过e.getSource()来找到调用者

((JLabel)e.getSource()).setText("A");

相应的
c.setText("B");
改为
((JLabel)e.getSource()).setText("B");

天书,完全看不懂谢谢................................................................................................c.setText("A");
你这里调用的是类外的变量,除非是全局变量,要不是不可能的,可以改成下面这样,通过e.getSource()来找到调用者

((JLabel)e.getSource()).setText("A");

相应的
c.setText("B");
改为
((JLabel)e.getSource()).setText("B");

楼上回答的很好!