gpt4 book ai didi

java - 通过for循环将节点添加到面板时出错

转载 作者:行者123 更新时间:2023-12-01 11:24:58 25 4
gpt4 key购买 nike

首先,抱歉我的英语:(

我正在阅读《Java 编程简介》并陷入了练习中:编写一个显示井字棋盘的程序。单元格可以是 X、O 或空。每个单元格显示的内容是随机决定的。

下面是我的代码

public class TictactoeBoard extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
GridPane pane = new GridPane();
Image ximage = new Image("x.gif");
Image oimage = new Image("o.gif");
ImageView xImageView = new ImageView(ximage);
ImageView oImageView = new ImageView(oimage);

for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
int random = (int)(Math.random() * 2);
if(random == 0) {
pane.add(xImageView, j, i);
} else {
pane.add(oImageView, j, i);
}
}
}

Scene scene = new Scene(pane);
primaryStage.setTitle("Tic-tac-toe Board");
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setResizable(false);
}

public static void main(String[] args) {
Application.launch(args);
}

它卡在for循环中的pane.add处。它收到此错误:http://pastebin.com/TB9kLhrZ

我尝试不使用for循环并手动添加(例如)

pane.add(oImageView, 0, 2);
pane.add(xImageView, 1, 3);

该应用程序运行良好。有人可以告诉我为什么会出现这个问题以及如何解决它吗?非常感谢您!

最佳答案

您只能向某个父级添加相同的 View 一次。因此,您需要为每个单元格创建新的 ImageView,如下所示:

for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
int random = (int)(Math.random() * 2);
if(random == 0) {
pane.add(new ImageView(ximage), j, i);
} else {
pane.add(new ImageView(oimage), j, i);
}
}
}

关于java - 通过for循环将节点添加到面板时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30886684/

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