Java fx绑定样式

时间:2013-08-13 18:10:02

标签: java javafx

这是我在这里的第一篇文章,所以如果我做错了什么或者有什么不清楚,我会提前感到抱歉。

在javafx中,我有一个包含大约5列的树表视图,第一列只显示对象名称的字符串。在set cell value factory方法中,我只需获取对象的name属性,如下所示。

column.setCellValueFactory(new Callback<CellDataFeatures<Foo, String>, ObservableValue<String>>(){
    @Override
    public ObservableValue<String> call(CellDataFeatures<Foo, String> row) {
        if (row.getValue().getValue() instanceof Foo){
            final Foo bar = (Foo)row.getValue().getValue();
            return bar.getNameProperty();
        }
        return null;
    }
});

我希望能够通过将其绑定到样式属性来更改此字符串中显示的字符串的颜色。我已经尝试将字符串更改为Text对象但无法绑定样式属性。有没有办法可以将样式属性绑定到Foo对象中的

String style = "-fx-text-fill: red"

这样每当我想以编程方式更改样式时,它也会在表格中更新?

再次,对任何不清楚的事情道歉!

1 个答案:

答案 0 :(得分:2)

要影响样式等单元格视觉效果,您需要定义一个cellFactory(除了您的cellValueFactory)。

实现“将样式属性绑定到Foo对象中的某些内容”的一种方法是:

  1. 向Foo添加一个定义为StringProperty的styleProperty。
  2. 在单元工厂提供的单元格中,当附加到单元格的foo对象发生更改时,取消绑定单元格的styleProperty,然后将单元格的styleProperty绑定到Foo项目的styleProperty。
  3. 然后,当您修改Foo对象的styleProperty时,TreeTable中foo显示的样式将自动同时更改。