将ObservableList添加到HBox?

时间:2015-12-27 08:56:30

标签: java arrays javafx vbox hbox

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

输出:

Only the Cikgu Suraya row of Labels is getting displayed

Test.length的大小输出:

enter image description here

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

1 个答案:

答案 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