Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get button name from ActionListener?

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.

like image 565
James MV Avatar asked Oct 23 '11 17:10

James MV


People also ask

What is ActionListener this in Java?

public interface ActionListener extends EventListener. The listener interface for receiving action events. The class that is interested in processing an action event implements this interface, and the object created with that class is registered with a component, using the component's addActionListener method.

What is the function of ActionListener?

You implement an action listener to define what should be done when an user performs certain operation. An action event occurs, whenever an action is performed by the user. Examples: When the user clicks a button, chooses a menu item, presses Enter in a text field.


1 Answers

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);      
}   
like image 122
Rob Avatar answered Sep 29 '22 22:09

Rob