Javafx,使用绑定为样式添加样式

时间:2017-06-26 12:29:06

标签: java css javafx binding javafx-8

我希望在条件为真时将某些样式绑定到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"文件

0 个答案:

没有答案