我正在用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()
,但我不希望文本显示在按钮上。还有其他想法吗?
答案 0 :(得分:1)
您可以使用AbstractButton#setActionCommand。
在你的循环中:
buttons[i].setActionCommand(i+"");
然后,当您使用i
getActionCommand
注意我在另一个答案的评论中提到我会创建一个新的Mine
extends JButton
,我相信这是一个更好,更完整的解决方案。然而,这很快就完成了工作。