在调整包含环绕TableCell项的文本项的TableView时,我遇到了一个问题。调整大小时,隐藏值将调整大小,但可见项不会重新计算文本换行。

红色框中的推文在调整大小期间被隐藏,并按预期调整了文本换行。在调整大小阶段,框上方的推文是可见的,并且仍然具有旧的包装。
下面是我的调整大小阶段的代码。
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);
}
}
};
}
});
}任何帮助都将不胜感激。
发布于 2014-03-29 23:04:14
这个比较接近,但不是很好:
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 ;
});看起来效果更好。
发布于 2019-06-06 15:21:18
只需在每个列的表上添加单元工厂即可。它应该在将数据添加到表视图之前添加。它对我来说工作得很好。
yourTableColumn.setCellFactory(param -> {
return new TableCell<YourDataClass, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText(null);
setStyle("");
} else {
Text text = new Text(item);
text.setStyle("-fx-text-alignment:justify;");
text.wrappingWidthProperty().bind(getTableColumn().widthProperty().subtract(35));
setGraphic(text);
}
}
};
});https://stackoverflow.com/questions/22732013
复制相似问题