TableCell не показывает значение item.toString () с пользовательской CellFactory - PullRequest
0 голосов
/ 14 марта 2019

Я установил пользовательские CellValueFactory и CellFactory на свой TableColumn: я программирую адресную книгу, Salutation - это перечисление со значениями "Mr" и "Mrs".

salutation.setCellValueFactory(c->new ReadOnlyObjectWrapper<>(c.getValue().getSalutation()));
salutation.setCellFactory((tableColumn)->new TableCell());

К сожалению, ячейки, установленныемой CellFactory ничего не показывает.(Примечание: на самом деле я хочу использовать пользовательский TableCell, я использовал только TableCell для тестирования).Каков наилучший способ показать строку item.toString () в каждой ячейке?

Спасибо:)

Спасибо

1 Ответ

1 голос
/ 14 марта 2019

Примечание: на самом деле я хочу использовать пользовательский TableCell, я использовал TableCell только для тестирования

Это как раз та проблема. TableCell в отличие от типа ячейки, созданного фабрикой ячеек по умолчанию, просто обновляет свойство empty ячейки. Удаление этой инициализации или замена присвоения фабрики на

salutation.setCellFactory(TableColumn.DEFAULT_CELL_FACTORY);

будет показывать результат вызова toString для элемента ячейки, как если бы это было cellFactory:

salutation.setCellFactory((tableColumn)->new TableCell() {

    @Override
    protected void updateItem(Object item, boolean empty) {
        super.updateItem(item, empty);
        setText(item == null ? "" : item.toString());
    }

});

Примечание: я рекомендую не использовать необработанный тип, но, не зная об используемых типах, я решил продолжать использовать необработанный тип в приведенном выше фрагменте.

...