gpt4 book ai didi

JavaFX 使用 for 循环将操作分配给数组数组中的所有按钮

转载 作者:行者123 更新时间:2023-11-30 07:23:40 25 4
gpt4 key购买 nike

我们有这个热身练习,我们应该创建这个非常简单的游戏,其 UI 已经设置完毕

which's UI is pretty much set up .

我收到错误“我在封闭范围内定义的局部变量必须是最终的或实际上是最终的”。

我不太明白,所以我google了一下,但大多数问题都是不同的。在输入这个问题时,我在 stackoverflow 建议中发现了这一点:

Assigning an action to each button, in an array of buttons in JavaFX

但我就是不明白。我正在从头开始学习编程/java。我希望 JavaFX/GuI 的东西不会成为障碍?

下面的代码仅包含我分配操作的尝试。我暂时将其与按钮的创建分开,以找出问题所在。问题仅出在 if 和 else 条件中。

    for(int i=0; i<=4; i++) {

for(int j=0; j<=4; j++) {

buttonGrid[i][j].setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {

if (buttonGrid[i][j].getText() == "X") {
buttonGrid[i][j].setText("O");
} else {
buttonGrid[i][j].setText("X");
}
}
});
}
}

现在我只希望按钮的标签在您单击按钮时从 X 更改为 O,从 O 更改为 X。顺便提一句。如果我学习 JavaFX 和 GUI,是否意味着我必须学习 css? (不是我不想,只是..不是现在)

如果需要其余代码来解决问题: http://textuploader.com/5b1kh

如果有人能告诉我如何以更有效的方式制作场景,我也将不胜感激。 (顺便说一句,我可以以某种方式锁定网格 Pane 所有单元格侧面的纵横比吗?)

最佳答案

我认为这个问题的答案很好地解释了您的问题以及如何解决它Problems with local variable scope. How to solve it?您不能在 Action 处理程序中使用 i 和 j。

试试这个。 [请注意,我还更改了字符串比较*]

 for(int i=0; i<=4; i++) {

for(int j=0; j<=4; j++) {

final Button myButton = buttonGrid[i][j];

myButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
if ("X".equals(myButton.getText())) {
myButton.setText("O");
} else {
myButton.setText("X");
}
}
});
}
}

[*] How do I compare strings in Java?

关于JavaFX 使用 for 循环将操作分配给数组数组中的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129375/

25 4 0
文章推荐: javascript - 尝试使用 toPrecision 时 toPrecision 不是函数
文章推荐: JavaFX、堆叠条形图和 CSS
文章推荐: javascript - 如何始终将数字四舍五入到 Javascript 中最接近的一分钱
文章推荐: java - List abcList 和方法重载