JavaFX TableColumn文本包装

我在调整包含围绕TableCell项目的文本项的TableView时遇到问题。 resize后,隐藏的值会resize,但可见项不会重新计算文本换行。

问题。

红色框中的推文在resize期间被隐藏,并按预期调整文本包装。 在resize阶段期间,框上方的推文可见,并且仍然具有旧的包装。

下面是我resize阶段的代码。

fxSearchResultsTableTweet.setCellFactory(new Callback<TableColumn, TableCell>() { @Override public TableCell call(TableColumn arg0) { return new TableCell() { 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); } } }; } }); } 

任何帮助将不胜感激。

这更接近,但不是很好:

  textCol.setCellFactory(new Callback, TableCell>() { @Override public TableCell call( TableColumn param) { TableCell 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中,当您向表中添加新项目时显示错误的高度,然后在resize时正确调整单元格的大小。 在8它几乎完美,似乎在添加第一个项目后失败(至少在我的模型中)。

如评论中所述,

 textCol.setCellFactory(tc -> { TableCell 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 ; }); 

似乎工作得更好。