2011-04-10 43 views
1

有没有人可以解释这段代码中的监听器有什么问题?关于Java的听众

我刚开始学习听众如何工作,并没有真正意识到ChangeListener是如何工作的。

import java.awt.event.*; 

class Button2 implements ChangeListener { //what's whong here 

    public void changePerformed(ChangeEvent s) { //and here? 
    System.out.println("Pressed the button " + s.getChangeCommand()); 
    } 
} 

然后我添加两个按钮。

..... 
but1.addChangeListener(new Button2()); 
but2.addChangeListener(new Button2()); 
..... 
+0

你看到的错误是什么? – Adam 2011-04-10 07:06:57

+2

为了便于回答您的问题,您应该指定您已经知道的内容,例如编译器会给出错误信息(并给出确切的错误信息),或者在运行时没有任何反应,或者老师说它是错误的,即使它可以工作。 – 2011-04-10 07:08:30

+0

您导入了哪个ChangeListener/ChangeEvent。我没有在我的java.awt.event包中。 – Howard 2011-04-10 07:10:55

回答

5

ChangeListener的所需的方法是stateChanged,不changePerformed

编辑此外,正如在上面的评论中指出的,我知道的ChangeListenerjavax.swing.event而不是java.awt.event

+0

如果我将changePerformed更改为stateChanged,则错误不会消失。 – Bob 2011-04-10 07:13:45

+1

@ user693567哪个错误?请描述你所看到的恐怖。 – Howard 2011-04-10 07:15:55

+0

eclipse写道,错误是在System.out.println(“按下按钮”+ s.getChangeCommand()); line – Bob 2011-04-10 07:17:34

1

由于zerocrats写道ChangeListener的方法确实stateChanged()而不是changePerformed()

此外,CahngeEvent没有方法称为getChangeCommand()。如果您正在使用常规的JButton,并且想要点击此按钮,为什么不使用旧的ActionListener

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
public class MyButtonListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("Pressed the button " + e.getActionCommand()); 
    } 
} 
+0

想查看changelistener如何工作) – Bob 2011-04-10 08:35:20