Swing - 使用getComponent()更新所有JButton

时间:2013-09-09 18:48:54

标签: java swing jbutton

我正在制作一个tictactoe游戏,其中每个棋盘片由JButton代表。当有人单击该按钮时,文本将更改为“X”或“O”。我正在写一个重置功能,它将所有按钮中的文本重置为“”。我正在使用getComponents()方法访问数组中的所有按钮。

我只是想知道我做错了什么因为这个位编译正确

component[i].setEnabled(true);

但这一点不是

component[i].setText("");

我收到“无法找到符号”错误。请看下面的代码。我只包含了我认为必要的代码。

    JPanel board = new JPanel(new GridLayout(3, 3));

    JButton button1 = new JButton("");
    JButton button2 = new JButton("");
    JButton button3 = new JButton("");
    JButton button4 = new JButton("");
    JButton button5 = new JButton("");
    JButton button6 = new JButton("");
    JButton button7 = new JButton("");
    JButton button8 = new JButton("");
    JButton button9 = new JButton("");

    board.add(button1);
    board.add(button2);
    board.add(button3);
    board.add(button4);
    board.add(button5);
    board.add(button6);
    board.add(button7);
    board.add(button8);
    board.add(button9);

public void reset()
{
    Component[] component = board.getComponents();

    // Reset user interface
    for(int i=0; i<component.length; i++)
    {
        component[i].setEnabled(true);
        component[i].setText("");
    }

        // Create new board logic
        tictactoe = new Board();
        // Update status of game
        this.updateGame();
}

1 个答案:

答案 0 :(得分:6)

getComponents ()返回Component个数组,但没有setText(String)方法。您应该将JButton个实例保留为类成员(这是我强烈建议的方式),并直接使用它们,或循环遍历所有Component个对象,检查它是否为{{1}实例。如果是,则明确将其转换为JButton,然后在其上调用JButton。 E.g。

setText(String)