JavaFX tablecolumn перенос текста

Я испытываю проблему при изменении размера TableView, который содержит текстовые элементы, которые обернуты вокруг элементов TableCell. При изменении размера скрытые значения изменяются, но видимые элементы не пересчитывают перенос текста.

The issue.

твиты в красном поле были скрыты во время изменения размера и их текстовая упаковка была скорректирована, как ожидалось. Твиты над коробкой были видны во время фазы изменения размера и все еще имеют старую обертку.

ниже мой код для фазы изменения размера.

fxSearchResultsTableTweet.setCellFactory(new Callback<TableColumn<Status, String>, TableCell<Status, String>>() {
        @Override
        public TableCell<Status, String> call(TableColumn<Status, String> arg0) {
            return new TableCell<Status, String>() {
                private Text text;

                @Override
                public void updateItem(String item, boolean empty) {
                    super.updateItem(item, empty);
                    if (!isEmpty()) {
                        text = new Text(item.toString());
                        text.setWrappingWidth(fxSearchResultsTableTweet.getWidth());
                        this.setWrapText(true);

                        setGraphic(text);
                    }
                }
            };
        }
    });
}

любая помощь была бы весьма признательна.

1 ответов


это ближе, но не здорово:

    textCol.setCellFactory(new Callback<TableColumn<Status, String>, TableCell<String, String>>() {

        @Override
        public TableCell<Status, String> call(
                TableColumn<Status, String> param) {
            TableCell<Status, String> cell = new TableCell<>();
            Text text = new Text();
            cell.setGraphic(text);
            cell.setPrefHeight(Control.USE_COMPUTED_SIZE);
            text.wrappingWidthProperty().bind(cell.widthProperty());
            text.textProperty().bind(cell.itemProperty());
            return cell ;
        }

    });

в 2.2 отображается неправильная высота при добавлении новых элементов в таблицу, а затем при изменении размера ячейки имеют правильный размер. В 8 это почти идеально, просто кажется, что сбой после добавления первого элемента (по крайней мере, в моем макете).

Как отметил в комментарии

textCol.setCellFactory(tc -> {
    TableCell<Status, String> cell = new TableCell<>();
    Text text = new Text();
    cell.setGraphic(text);
    cell.setPrefHeight(Control.USE_COMPUTED_SIZE);
    text.wrappingWidthProperty().bind(textCol.widthProperty());
    text.textProperty().bind(cell.itemProperty());
    return cell ;
});

Кажется, работает лучше.