[英]How to set individual cell tooltip/bind property to the tooltip for TableColumn in JavaFX
我有一個表格,我想在其中顯示特定列的工具提示,該列與與用戶懸停在其上的單元格不同的值相關。 我通常知道,工具提示是為確切的單元格對象值或其他字符串設置的。 但我想顯示與每個相關的不同值
就像顯示的圖像一樣,我正在顯示一個“類型”,我希望用戶能夠將鼠標懸停在單個“類型”單元格上以查看“子類型”字符串作為工具提示。 (就像在圖像中一樣,但我希望它顯示實際類型而不是虛擬字符串。)兩者都在 IDisplayLayer 接口中定義。
我需要在工具提示中顯示特定的 subtypeProperty,而不是字符串。 這個子類型需要像普通的 PropertyValueFactory 綁定數據一樣綁定。 我怎樣才能綁定這個? 提前感謝您的任何幫助/指導。
TableColumn<IDisplayLayer, String> type = new TableColumn<>("Type");
PropertyValueFactory<IDisplayLayer, String> pvf2 = new PropertyValueFactory<IDisplayLayer, String>("layerType");
type.setCellFactory
(
column ->
{
return new TableCell<IDisplayLayer, String>()
{
@Override
protected void updateItem(String item, boolean empty)
{
Tooltip tip = new Tooltip("This is a tooltip"); //where I need to set the value here
super.updateItem(item, empty);
setText(item);
setTooltip(tip);
}
};
});
兩者都定義的地方:公共接口 IDisplayLayer {
String getLayerType();
void setLayerType(String s);
StringProperty layerTypeProperty();
String getLayerSubtype();
void setLayerSubtype(String s);
StringProperty layerSubtypeProperty();
}
由於您的單元格實際上依賴於模型對象中的兩個屬性,因此您可能需要一個類似於以下內容的表列配置:
TableColumn<IDisplayLayer, IDisplayLayer> type = new TableColumn<>("Type");
type.setCellValueFactory(cellData -> new SimpleObjectProperty<>(cellData.getValue()));
type.setCellFactory(col -> new TableCell<>() {
private final Tooltip tooltip = new Tooltip();
@Override
protected void updateItem(IDisplayLayer row, boolean empty) {
super.updateItem(row, empty);
textProperty().unbind();
tooltip.textProperty().unbind();
if (row == null || empty) {
setText(null);
setTooltip(null);
} else {
textProperty().bind(row.layerTypeProperty());
tooltip.textProperty().bind(row.layerSubtypeProperty());
setTooltip(tooltip);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.