JavaFX tablecolumn перенос текста
Я испытываю проблему при изменении размера TableView, который содержит текстовые элементы, которые обернуты вокруг элементов TableCell. При изменении размера скрытые значения изменяются, но видимые элементы не пересчитывают перенос текста.
твиты в красном поле были скрыты во время изменения размера и их текстовая упаковка была скорректирована, как ожидалось. Твиты над коробкой были видны во время фазы изменения размера и все еще имеют старую обертку.
ниже мой код для фазы изменения размера.
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 ;
});
Кажется, работает лучше.