我正在用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(),但我不希望文本出现在按钮上。还有其他想法吗?
发布于 2014-05-01 18:13:51
您可以使用AbstractButton#setActionCommand。
在你的循环中:
buttons[i].setActionCommand(i+"");然后当您使用i时,您将得到getActionCommand
注意,我在对另一个答案的评论中确实提到,我将创建一个新的类Mine,extends JButton,我认为它是一个更好、更完整的解决方案。然而,这使得这项工作完成得相当快。
https://stackoverflow.com/questions/23413589
复制相似问题