我有一组JavaFX标签要添加到HBox。但是我知道HBox.add方法不接受Collection类型。因此,我通过循环添加它。不幸的是,一次只执行一个标签而不是所有标签都显示出来。有什么想法吗?
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();
}
我有四个相同大小的ObservableLists。 OutofboundsException不是问题。 test.length与所有四个列表的大小相同。
这是一个包含很多代码的大项目,因此我不适合在这里分享所有代码。但是,您可以查看我的github以获取详细示例https://github.com/ariff20/UPSR
尽管test.length超过1,但只添加了Cikgu Suraya标签行。
输出:
Test.length的大小输出:
它会运行两次,但只显示一行标签。
答案 0 :(得分:0)
你的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();
实质上,每次迭代只会向HBox
添加一个VBox
。