无法在TableView中为浮点数数组设置CellValueValueFactory

时间:2018-10-22 23:23:44

标签: javafx

我正在尝试为我拥有的数组设置CellValueFactory,但这不起作用。我想要的变量是Vaca.ordenha []。

TableColumn<Vaca, String>[] colunasOrdenhas = new TableColumn[concurso.getQtdOrdenhas()];
for (int i = 0; i < concurso.getQtdOrdenhas(); i++) {
    colunasOrdenhas[i]  = new TableColumn<>((i+1) + "ª ordenha");
    colunasOrdenhas[i].setCellValueFactory(new PropertyValueFactory<>("ordenha[" + Integer.toString(i) + "]"));
}

1 个答案:

答案 0 :(得分:0)

使用PropertyValueFactory只能访问getter的返回值/包装在属性getter返回的属性中的值。您需要编写自己的cellValueFactory实现。

假设getOrdenha()中有一个Vaca方法,返回长度至少为float[]的{​​{1}}个数组:

concurso.getQtdOrdenhas()

TableColumn<Vaca, Number>[] colunasOrdenhas = new TableColumn[concurso.getQtdOrdenhas()]; for (int i = 0; i < concurso.getQtdOrdenhas(); i++) { colunasOrdenhas[i] = new TableColumn<>((i+1) + "ª ordenha"); final int index = i; colunasOrdenhas[i].setCellValueFactory(cd -> new SimpleFloatProperty(cd.getValue().getOrdenha()[index])); } 返回行项目,因此,如果以上假设不正确,则可以使用任何其他方式来检索要显示的值。如果列的类型不同,则可以使用不同的cd.getValue()实现来包装值。