Java按钮操作命令

时间:2014-05-01 18:00:50

标签: java jframe jbutton actionlistener

我正在用Java创建一个简单的扫雷游戏。尺寸9x9。

我创建了一个JPanels数组和一组按钮;我将每个按钮添加到其各自的JPanel。然后我将JPanels添加到JFrame

如何区分动作事件中的每个按钮?

以下是我的一些代码:

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);
}

我可以考虑这样做的唯一方法是在按钮中添加文字,如下所示:

    buttons[i] = new JButton(i);

然后调用getActionCommand(),但我不希望文本显示在按钮上。还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用AbstractButton#setActionCommand

在你的循环中:

buttons[i].setActionCommand(i+"");

然后,当您使用i

时,您将获得getActionCommand

注意我在另一个答案的评论中提到我会创建一个新的Mine extends JButton,我相信这是一个更好,更完整的解决方案。然而,这很快就完成了工作。