Reputation: 180
I'm creating a simple Minesweeper game in Java. Size 9x9.
I create an array of JPanels
and an array of buttons; I add each button to its respective JPanel
. then i add the JPanels
to the JFrame
.
How do i distinguish between each button on the action event?
Here's some of my code:
int gridx = 9;
int gridy = 9;
JButton[] buttons = new JButton[gridx*gridy];
JPanel[] jpanels = new JPanel[gridx*gridy];
public Minesweeper(){
super("Minesweeper");
setLayout(new GridLayout(9,9));
JPanel panel = new JPanel();
int i = 0;
for(i = 0; i<gridx*gridy; i++){
jpanels[i] = new JPanel();
buttons[i] = new JButton();
buttons[i].addActionListener(buttonEvent);
jpanels[i].setLayout(new GridLayout(1,1));
jpanels[i].add(buttons[i]);
add(jpanels[i]);
}
//buttons[67].setEnabled(false);
setSize(300,300);
setVisible(true);
}
The only way i can think about doing this is adding text to the button like so:
buttons[i] = new JButton(i);
Then calling getActionCommand()
but i dont want text to show up on the button. Any other ideas?
Upvotes: 1
Views: 985
Reputation: 7796
You can use AbstractButton#setActionCommand.
In your loop:
buttons[i].setActionCommand(i+"");
Then you'll get i
back when you use getActionCommand
Note I did mention in a comment on another answer that I would create a new class Mine
which extends JButton
which I believe to be a better and more complete solution. This however gets the job done rather quickly.
Upvotes: 1