向 HBox 添加一个 ObservableList?
Adding an ObservableList to HBox?
我有一组 JavaFX 标签要添加到 HBox 中。但是我知道 HBox.add 方法不接受集合类型。因此,我改为通过循环添加它。不幸的是,一次只执行一个标签,并没有显示所有标签。有什么想法吗?
for(int m=0;m<test.length;m++)
{
HBox hb = new HBox();
System.out.println("Test.length's size : " + test.length);
System.out.println("TeacherLabels's count : " + teacherlabels.size());
hb.getChildren().addAll(teacherlabels.get(m),eachlecturertotstudents.get(m),subincome.get(m),teacherpayments.get(m));
hb.setSpacing(10);
VBox vb = new VBox();
vb.getChildren().addAll(tuitionreport,totStudents,totalFees);
vb.setSpacing(10);
VBox vbez = new VBox();
vbez.getChildren().addAll(vb,instructors,hboxtitle,hb,linez,allpaymenta,tuitionincomea);
this.setScene(new Scene(vbez, 2000, 2000));
this.show();
}
我有四个相同大小的 ObservableList。 OutofboundsException 在这里不是问题。 test.length 与所有四个列表的大小相同。
这是一个大项目,代码很多,所以我在这里分享它是不合适的。但是,您可以查看我的 github 以获取详细示例 https://github.com/ariff20/UPSR
尽管 test.length 大于 1,但仅添加了 Cikgu Suraya 行标签。
输出:
Test.length的尺寸输出:
运行了两次,但只显示一行标签。
您的 for 循环范围错误,当您更新场景并将其显示在循环内时,这会导致仅显示循环中最后一次迭代的内容。由于很难猜测您对输出的意图是什么,请执行以下操作:
VBox vb = new VBox();
vb.getChildren().addAll(tuitionreport,totStudents,totalFees);
vb.setSpacing(10);
VBox vbez = new VBox();
vbez.getChildren().addAll(vb,instructors,hboxtitle);
for(int m=0;m<test.length;m++) {
HBox hb = new HBox();
System.out.println("Test.length's size : " + test.length);
System.out.println("TeacherLabels's count : " + teacherlabels.size());
hb.getChildren().addAll(teacherlabels.get(m),eachlecturertotstudents.get(m),subincome.get(m),teacherpayments.get(m));
hb.setSpacing(10);
vbez.getChildren().add(hb);
}
vbez.getChildren().addAll(linez,allpaymenta,tuitionincomea);
this.setScene(new Scene(vbez, 2000, 2000));
this.show();
本质上,每次迭代只在VBox
上加一个HBox
。
我有一组 JavaFX 标签要添加到 HBox 中。但是我知道 HBox.add 方法不接受集合类型。因此,我改为通过循环添加它。不幸的是,一次只执行一个标签,并没有显示所有标签。有什么想法吗?
for(int m=0;m<test.length;m++)
{
HBox hb = new HBox();
System.out.println("Test.length's size : " + test.length);
System.out.println("TeacherLabels's count : " + teacherlabels.size());
hb.getChildren().addAll(teacherlabels.get(m),eachlecturertotstudents.get(m),subincome.get(m),teacherpayments.get(m));
hb.setSpacing(10);
VBox vb = new VBox();
vb.getChildren().addAll(tuitionreport,totStudents,totalFees);
vb.setSpacing(10);
VBox vbez = new VBox();
vbez.getChildren().addAll(vb,instructors,hboxtitle,hb,linez,allpaymenta,tuitionincomea);
this.setScene(new Scene(vbez, 2000, 2000));
this.show();
}
我有四个相同大小的 ObservableList。 OutofboundsException 在这里不是问题。 test.length 与所有四个列表的大小相同。
这是一个大项目,代码很多,所以我在这里分享它是不合适的。但是,您可以查看我的 github 以获取详细示例 https://github.com/ariff20/UPSR
尽管 test.length 大于 1,但仅添加了 Cikgu Suraya 行标签。
输出:
Test.length的尺寸输出:
运行了两次,但只显示一行标签。
您的 for 循环范围错误,当您更新场景并将其显示在循环内时,这会导致仅显示循环中最后一次迭代的内容。由于很难猜测您对输出的意图是什么,请执行以下操作:
VBox vb = new VBox();
vb.getChildren().addAll(tuitionreport,totStudents,totalFees);
vb.setSpacing(10);
VBox vbez = new VBox();
vbez.getChildren().addAll(vb,instructors,hboxtitle);
for(int m=0;m<test.length;m++) {
HBox hb = new HBox();
System.out.println("Test.length's size : " + test.length);
System.out.println("TeacherLabels's count : " + teacherlabels.size());
hb.getChildren().addAll(teacherlabels.get(m),eachlecturertotstudents.get(m),subincome.get(m),teacherpayments.get(m));
hb.setSpacing(10);
vbez.getChildren().add(hb);
}
vbez.getChildren().addAll(linez,allpaymenta,tuitionincomea);
this.setScene(new Scene(vbez, 2000, 2000));
this.show();
本质上,每次迭代只在VBox
上加一个HBox
。