1

我有一组 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 行标签。

输出 :

仅显示 Cikgu Suraya 行标签

Test.length 的大小输出:

在此处输入图像描述

它运行两次,但只显示一行标签。

4

1 回答 1

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

于 2015-12-27T14:18:45.863 回答