我正在编写一个ticTacToe游戏。为此,我创建了JButton并将它们存储到数组中。当用户单击该特定按钮时,我想知道单击了哪个按钮。我试图找到在“按钮”数组中单击的JButton来设置该特定按钮的文本。
public class tester extends JFrame{
boolean crossed = false;
JButton[] buttons = new JButton[9];
public tester(){
super("The title");
this.setLayout(new GridLayout(3,2));
for(int x = 0 ; x < buttons.length; x++){
buttons[x] = new JButton();
this.add(buttons[x]);
buttons[x].addActionListener(new tickSquare());
}
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setSize(400, 400);
this.setVisible(true);
}
public class tickSquare implements ActionListener{
public void actionPerformed(ActionEvent e){
}
}
public static void main(String[] args){
new tester();
}
}
答案 0 :(得分:0)
将循环中的按钮编号分配给他们的点击事件类。
for(int x = 0 ; x < buttons.length; x++)
{
buttons[x] = new JButton();
this.add(buttons[x]);
buttons[x].addActionListener(new tickSquare(x));
}
也
public class tickSquare implements ActionListener
{
public int ButtonNumber;
public tickSquare(int x)
{
ButtonNumber = x;
}
public void actionPerformed(ActionEvent e)
{
//do something with the button number
}
}
编辑:您可能应该将Button Number整数设为private / protected并添加get方法。
答案 1 :(得分:0)
如果将它放在actionListener中,它应该可以工作 不太确定一切是否写得正确
for(int i=0;i<buttons.length;i++){
if(e.getSource()==buttons[i]){
buttons[i].setText("x");
}
}