2011-04-10 64 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