Domanda

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?

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top