Java按钮操作命令
我正在用Java创建一个简单的扫雷游戏。尺寸为9x9 我创建了一个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
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+"");