我们有一个热身练习,我们应该创建一个真正简单的游戏,它的用户界面已经设置好了
.
我得到了错误“我在封闭范围内定义的局部变量必须是final或实际上是final”。
我不明白,所以我在谷歌上搜索了一下,但大多数问题都不一样。键入此问题时,我在stackoverflow建议中发现:
在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
如果有人能告诉我如何更有效地拍摄这些场景,我也会很感激的(顺便说一句,我可以锁定网格窗格中所有单元格边的纵横比吗?)
1条答案
按热度按时间chy5wohz1#
我认为这个问题的答案很好地解释了你的问题,以及如何用局部变量范围来解决这个问题。如何解决?不能在操作处理程序中使用i和j。
试试这个[注意,我还更改了字符串比较*]
[*]如何比较java中的字符串?