1
blueButton.addActionListener(new blueButtonListner());

输入此代码会发生什么?

我认为Java编译器创建了一个名为的对象blueButtonListner(),它成为(参数)的输入addActionListener

如果这是正确的,我猜那么这段代码也应该工作:

redButton.addActionListener(rr);
redButtonListener rr =new redButtonListener();

但它显示一个错误。谁可以给我解释一下这个?

4

4 回答 4

6

侦听器对象需要在使用声明:

redButtonListener rr = new redButtonListener();
redButton.addActionListener(rr);

你是对的blueButton.addActionListener(new blueButtonListner());。该语句创建了一个类的实例blueButtonListener,该实例立即传递给addActionListener.

于 2012-08-14T03:18:00.140 回答
2

这是一个优先级的问题,在它被创建之前你不能拥有它

redButton.addActionListener(rr); redButtonListener rr =new redButtonListener();

行不通,因为rr尚未定义,编译器不知道它是什么。

相比之下

blueButton.addActionListener(new blueButtonListner())

编译器创建一个临时对象并将其传递给addActionListener方法。

你可以用这个更正你的代码

redButtonListener rr =new redButtonListener();
redButton.addActionListener(rr); 
于 2012-08-14T03:19:10.390 回答
1

反过来尝试代码:

redButtonListener rr =new redButtonListener();

redButton.addActionListener(rr);
于 2012-08-14T03:18:15.070 回答
1

需要先创建监听器,然后才能添加。尝试以下操作:

redButtonListener rr =new redButtonListener();
redButton.addActionListener(rr); 

请注意,我们会收到一个错误,通常仔细阅读错误内容应该会给我您需要的答案。在这种情况下,它应该告诉您 rr 未定义,这显然是因为当您使用它时,它还不存在。

于 2012-08-14T03:18:52.607 回答