I have an array I fill with buttons and I want an individual button to change its text when clicked.
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!");
}
The current doesn’t work because of incompatible types, what format is appropriate?
Yes, it makes no sense to pass an object,
this, into an array index which expects an int, not your GUI object, so I’m not sure what you were trying to achieve with this.Just get a reference to the JButton that’s been clicked from the ActionEvent’s
getSource()method:Edit:
Also you should avoid using
thisas your ActionListener since this means that you’re likely having your GUI class implement an ActionListener which is asking the poor class to be too many things, to do too much. You’re much better off either using anonymous inner classes or else even better use AbstractActions.