gpt4 book ai didi

java - JButton 在单击时更改 JButton 文本

转载 作者:行者123 更新时间:2023-12-02 06:00:04 27 4
gpt4 key购买 nike

我正在创建一个黑白棋游戏,想知道如何在单击时将按钮文本从 B 更改为 W,反之亦然。

我尝试将 Action 监听器添加到我的 forloop 中,这为游戏创建了我的板,当我单击标记为 W 的按钮时,它会将整个第一行按钮更改为 B。我想要它做什么它只将单击的按钮更改为相反的如果单击后最初 B 更改为 W

                                if (src == buttonPos[x][y]
&& buttonPos[x][y].getText() == currentPlayer) {
buttonPos[x][y].setText("W");
} else {
buttonPos[x][y].setText("B");
}

预期输出是单击的按钮将更改为相反的字母,因此如果最初是 b,它将更改为 W。

最佳答案

what i want it to do it change only the clicked button to the opposite

您的 ActionListener 代码太复杂。不需要循环代码。您已经知道该按钮的来源,因此只需将 if/else 逻辑应用于该按钮即可。

此外,无需创建多个 ActionListener。所有按钮的逻辑都是相同的,因此您可以与每个按钮共享相同的 ActionListener。

所以你的代码可能看起来像这样:

ActionListener al = new ActionListener() 
{
@Override
public void actionPerformed(ActionEvent e)
{
JButton src = (JButton) e.getSource();
String text = button.getText();
button.setText( text.equals("W") ? "B" : "W" );
}
});

for (int x = 0; x < buttonPos.length; x++) {
for (int y = 0; y < buttonPos[x].length; y++) {
buttonPos[x][y] = new JButton();
reversiBoard.add(buttonPos[x][y]);
buttonPos[x][y].addActionListener( al ); // changed
}
}

关于java - JButton 在单击时更改 JButton 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55983560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com