Javafx 如何知道TableView中的项是否被截断(省略)?
我使用的是TableView。需要显示的字符串数据长度可变。我如何知道字符串数据是否太长(因此得到了省略号) 我的猜测是使用自定义TableCell(调用setCellFactory()),在updateItem()中我应该查询数据的像素宽度,但我不知道如何查询Javafx 如何知道TableView中的项是否被截断(省略)?,javafx,javafx-8,Javafx,Javafx 8,我使用的是TableView。需要显示的字符串数据长度可变。我如何知道字符串数据是否太长(因此得到了省略号) 我的猜测是使用自定义TableCell(调用setCellFactory()),在updateItem()中我应该查询数据的像素宽度,但我不知道如何查询 column.setCellFactory(column -> new TableCell<Transaction, String>() { @O
column.setCellFactory(column ->
new TableCell<Transaction, String>() {
@Override
protected void updateItem(final String item, final boolean empty) {
super.updateItem(item, empty);
setText(item);
if (/*measuredWidth > getWidth()*/) {
setTooltip(new Tooltip(item));
}
}
}
);
column.setCellFactory(column->
新表单元格(){
@凌驾
受保护的void updateItem(最终字符串项,最终布尔值为空){
super.updateItem(项,空);
setText(项目);
如果(/*measuredWidth>getWidth()*/){
设置工具提示(新工具提示(项目));
}
}
}
);
有什么想法吗?column.setCellFactory(col->newtableCell())
column.setCellFactory(col -> new TableCell<Object, String>()
{
@Override
protected void updateItem(final String item, final boolean empty)
{
super.updateItem(item, empty);
setText(item);
TableColumn tableCol = (TableColumn) col;
if (item != null && tableCol.getWidth() < new Text(item + " ").getLayoutBounds().getWidth())
{
tooltipProperty().bind(Bindings.when(Bindings.or(emptyProperty(), itemProperty().isNull())).then((Tooltip) null).otherwise(new Tooltip(item)));
} else
{
tooltipProperty().bind(Bindings.when(Bindings.or(emptyProperty(), itemProperty().isNull())).then((Tooltip) null).otherwise((Tooltip) null));
}
}
});
{
@凌驾
受保护的void updateItem(最终字符串项,最终布尔值为空)
{
super.updateItem(项,空);
setText(项目);
TableColumn tableCol=(TableColumn)col;
if(item!=null&&tableCol.getWidth()
我不确定,但我知道对于标签,您可以这样做:label.setMinWidth(Region.USE\u PREF\u SIZE)代码>可能是类似的…你可以查询单元格的prefWidth并将其与列宽进行比较(猜测,没有尝试;)你找到这个了吗?我也想这么做…还没有。我为所有项目添加了工具提示,不管它们的宽度是多少。现在,好吧,我想出来了。。。