Save the button link in Map
String letters[] = {"0", "a", "b", "c", "d", "e", "f"}; JButton btn; int count = 0; HashMap<String,JButton> buttonCache = new HashMap<String,JButton>(); for (int f=1; f < 7;f++){ for (int i=1; i < 7;i++){ btn = new JButton(letters[f]+i, cup); mainGameWindow.add(btn[i]); btn.addActionListener(this); String stringCommand = Integer.toString(randomArrayNum()); btn.setActionCommand(stringCommand); buttonMap.put(stringCommand,btn); count++; if(count == 18){ generateArray(); } } }
Then, in the ActionListener
, return the button from the command:
public void actionPerformed(ActionEvent e) { String command = ((JButton) e.getSource()).getActionCommand(); JButton button = buttonCache.get(command); if (null != button) {
Edit
Repeating this answer more than five years later, I have no idea why I suggested HashMap
: P
This code does the same without a third-party Map
:
String letters[] = {"0", "a", "b", "c", "d", "e", "f"}; int count = 0; for (int f=1; f < 7;f++){ for (int i=1; i < 7;i++) { String stringCommand = Integer.toString(randomArrayNum()); Button btn = new JButton(letters[f]+i, cup); btn.setActionCommand(stringCommand); btn.addActionListener(this); mainGameWindow.add(btn[i]); // NOTE : I have no idea what this is for... count++; if(count == 18){ generateArray(); } } }
in ActionListener
...
public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); String command = button.getActionCommand();
source share