blueButton.addActionListener(new blueButtonListner());
输入此代码后会发生什么?
我认为Java编译器会创建一个名为blueButtonListner()
的对象,它将成为addActionListener
的参数的输入
如果这是正确的,我猜这个代码也应该有效:
redButton.addActionListener(rr);
redButtonListener rr =new redButtonListener();
但它显示错误。有人可以向我解释一下吗?
答案 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没有被定义,这显然是因为当你使用它时,它还不存在。