我正在尝试为我拥有的数组设置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) + "]"));
}
答案 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()
实现来包装值。