我有一个数组,我填充了按钮,我想要一个单独的按钮,在点击时更改其文本。
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!");
}
由于类型不兼容,当前不起作用,适合的格式是什么?
答案 0 :(得分:5)
是的,将一个对象this
传递给一个需要int而不是你的GUI对象的数组索引是没有意义的,所以我不确定你用这个来实现什么。< / p>
只需获取从ActionEvent的getSource()
方法中点击的JButton的引用:
JButton btn = (JButton)e.getSource();
btn.setText("I've been clicked");
修改强>
此外,您应该避免使用this
作为ActionListener,因为这意味着您可能让您的GUI类实现一个ActionListener,它要求穷人做太多事情,做太多。使用匿名内部类或者更好地使用AbstractActions,你会好得多。