Get button name from ActionListener?

James MV picture James MV · Oct 23, 2011 · Viewed 56.5k times · Source

I have scoured the internet but can't find an answer to this :

I'm using a for loop to create 36 buttons called a1, a2, etc. and assigning each of them a unique Action Command at the same time.

Later on I wanted to get the name of the button from the actionPerformed(ActionEvent e) method.

I could get the ActionCommand easy enough, but I need the name of the button as well.

Any help much appreciated!

Edit:

Here is the code I'm using:

String letters[] = {"0", "a", "b", "c", "d", "e", "f"};
JButton btn[] = new JButton[35];
int count = 0;


for (int f=1; f < 7;f++){

        for (int i=1; i < 7;i++){
            btn[i] = new JButton(letters[f]+i, cup);
            System.out.println(btn[i]));
            mainGameWindow.add(btn[i]);
            btn[i].addActionListener(this);
            String StringCommand = Integer.toString(randomArrayNum());
            btn[i].setActionCommand(StringCommand);
            count++;
            if(count == 18){
                generateArray();
            }

        }

}

This gives you 36 buttons for a 6x6 grid that go a1-6, b1-6, c1-6 etc

I just can't seem to control the buttons once I've created them this way, I can't assign icons or get the name of the button.

Thanks in Advance.

Answer

Rob picture Rob · Oct 10, 2012
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);      
}