2013-01-14 73 views
3

我有一個數組我填充按鈕,我想單擊按鈕來改變它的文本點擊。按鈕陣列,只有一個按鈕,當點擊時改變它的文本

for (int i = 0; i<4; i++) 
     { 
      button[i] = new JButton ("Add"); 
      button[i].addActionListener(this); 

      box[i] = new JComboBox(); 
      foodOptions.add(box[i]); 
      foodOptions.add(button[i]); 

     } 

public void actionPerformed (ActionEvent e) 
    { 

     button[this].setText("I've been clicked!"); 

    } 

由於不兼容的類型,當前不起作用,什麼格式是合適的?

回答

5

是的,將一個對象this傳遞給一個數組索引需要一個int而不是GUI對象,所以我不確定你試圖用這個來實現什麼。

只是得到一個已經點擊了從動作事件的getSource()方法將JButton參考:

JButton btn = (JButton)e.getSource(); 
btn.setText("I've been clicked"); 

編輯:
你也應該避免使用this爲您的ActionListener,因爲這意味着你可能讓你的GUI類實現一個ActionListener,它要求這個可憐的類太多,太多了。無論是使用匿名內部類還是使用AbstractActions,都會更好。

+0

謝謝!這是我需要的 –

+0

@FredV:不客氣。 –

+0

@FredV:請參閱編輯。 –

相關問題