Не удается установитьCellValueFactory в TableView для массива с плавающей точкой - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь установить 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 голосов
/ 23 октября 2018

Вы не можете получить доступ ни к чему, кроме возвращаемого значения получателя / значения, заключенного в свойство, возвращаемое получателем свойства с помощью PropertyValueFactory.Вам нужно написать собственную реализацию cellValueFactory.

Предполагая, что в Vaca есть метод getOrdenha(), возвращающий float[] массивы длиной не менее 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() возвращает элемент строки, чтобы вы могли использовать любой другой способ получения значения для отображения, если приведенные выше предположения неверны.Если тип столбца отличается, вы можете использовать другую реализацию ObservableValue для переноса значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...