需要ActionListener代码说明

时间:2012-08-14 03:15:19

标签: java swing compiler-errors jbutton actionlistener

blueButton.addActionListener(new blueButtonListner());

输入此代码后会发生什么?

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

如果这是正确的,我猜这个代码也应该有效:

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

但它显示错误。有人可以向我解释一下吗?

4 个答案:

答案 0 :(得分:6)

侦听器对象需要在之前声明

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

你对blueButton.addActionListener(new blueButtonListner());的看法是正确的。此语句创建类blueButtonListener实例,该实例立即传递给addActionListener

答案 1 :(得分:2)

如果是优先权,那么在创建之前你就无法拥有某些东西

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

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

相比之下

blueButton.addActionListener(new blueButtonListner())

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

您可以使用此

更正您的代码
redButtonListener rr =new redButtonListener();
redButton.addActionListener(rr); 

答案 2 :(得分:1)

反过来尝试代码:

redButtonListener rr =new redButtonListener();

redButton.addActionListener(rr);

答案 3 :(得分:1)

首先需要先创建监听器才能添加监听器。请尝试以下方法:

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

请注意,我们会收到错误,通常会仔细阅读错误说明应该为您提供所需的答案。在这种情况下,它应该告诉你rr没有被定义,这显然是因为当你使用它时,它还不存在。