获取JButton数组中元素的索引。 Java的

时间:2017-04-11 12:01:54

标签: java arrays jframe jbutton

我正在编写一个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();
    }
}   

2 个答案:

答案 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");
}
}