2013-01-14 75 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:请参阅编辑。 –

相关问题