Java按钮操作命令

Java按钮操作命令,java,jframe,jbutton,actionlistener,Java,Jframe,Jbutton,Actionlistener,我正在用Java创建一个简单的扫雷游戏。尺寸为9x9 我创建了一个jpanel数组和一个按钮数组;我将每个按钮添加到其各自的JPanel。然后我将JPanels添加到JFrame 如何区分动作事件上的每个按钮 以下是我的一些代码: int gridx = 9; int gridy = 9; JButton[] buttons = new JButton[gridx*gridy]; JPanel[] jpanels = new JPanel[gridx*gridy]; public Minesw

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

我创建了一个
jpanel
数组和一个按钮数组;我将每个按钮添加到其各自的
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);
}
然后调用
getActionCommand()
,但我不希望按钮上显示文本。还有其他想法吗?

你可以用

在您的循环中:

buttons[i].setActionCommand(i+"");
然后,当您使用
getActionCommand


注意:我在另一个答案的评论中提到,我将创建一个新类
Mine
,它
扩展JButton
,我认为这是一个更好、更完整的解决方案。但是,这可以很快完成工作。

我怀疑你可以使用
ActionEvent
对象的方法,当你在
ActionListener#actionPerformed
方法存根上被调用时,你会得到该对象。你不需要
jpanels
,在这里最好也省去
面板,当内容窗格获得GridLayout.FYI时,您使用
JButton[]
而不是
JButton[]][]
有什么特别的原因吗?当然你可以把你的
JButton[81]
映射到
JButton[9][9]
但是为什么呢?是的,我刚把它切换到2darray@Cruncher没关系,我想出来了:)啊!是的,就是这个。我不知道你能在这里面设置除字符串以外的东西。非常感谢。一旦我获得足够的声誉,我会将您的答案标记为已接受。@user3521471您只能将
String
设置为操作命令。
i+”
i
转换为
字符串。使用
getActionCommand
时,必须将其转换回整数。
buttons[i].setActionCommand(i+"");