Get button name from ActionListener?
JButton btnClear = new JButton("clear");
btnClear.addActionListener(this);
btnClear.setName("clear");
//..............
//..............
public void actionPerformed(ActionEvent e) {
JButton o = (JButton)e.getSource();
String name = o.getName();
if (name == "clear")
{
euroMillText.setText("");
}
else if (name == "eumill")
{
getLottoNumbers();
}
//JOptionPane.showMessageDialog(null,name);
}
Keep a reference of the buttons in a 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 your ActionListener
, get the button back from the command :
public void actionPerformed(ActionEvent e) {
String command = ((JButton) e.getSource()).getActionCommand();
JButton button = buttonCache.get(command);
if (null != button) {
// do something with the button
}
}
Edit
Revisiting this answer over five years later, I have no idea why I suggested a HashMap
:P
This code does the exact same thing, no 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 the ActionListener
...
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
String command = button.getActionCommand();
// do something with the button
// the command may help identifying the button...
}
String buttonText = ((JButton) e.getSource()).getText()