我希望在条件为真时将某些样式绑定到TableCell
StyleClass
,所以我尝试的方式与此问题中的答案相似:Java fx binding styles但它没有用,我想要这样的东西,我用Graphics Javafx: udpate TableCell做的。
所以这就是我的尝试:
1
private StringBinding styleBinding;
@Override
public void updateItem(String item, boolean empty){
styleProperty().unbind();
super.updateItem(item,empty);
MyRow currentRow = getTableRow().getItem();
styleBinding = Bindings.when(currentRow.hasStyle())
.then(currentRow.getStyle())
.otherwise("");
styleProperty().bind(styleBinding);
}
2
private BooleanProperty styleProperty;
@Override
public void updateItem(String item, boolean empty){
super.updateItem(item,empty);
MyRow currentRow = getTableRow().getItem();
styleProperty.bind(currentRow.hasStyle());
styleProperty.addListener((observable, oldValue, newValue) ->{
if(newValue){
setStyle(currentRow().getStyle()); // also tried with getStyleClass().add(..);
} else [
setStyle(""); // and getStyleClass().remove(...);
}
}
当我试图在updateItem()
中放置任何条件时,只是简单地使getStyleClass().add(currentRow.getStyle());
工作,setStyle(...)
也不起作用。所以也许我必须以某种方式使用样式,但我不知道如何在条件改变时将新样式绑定到样式类或者听取更改。你有什么想法吗?
我想要的是:Bindings.when(condition).then(getStyleclass::add).otherwise(getStyleclass::remove);
编辑:
public String getStyle(){
return "border";
}
.css文件:
* {
my-color: #0e5bd6;
}
.tree-table-cell.border,
.table-cell.border{
-fx-border-width: 1 5 1 1;
-fx-border-color: my-color my-color my-color my-color ;
}
当然,在.fxml
styleSheets="border.css"
文件