1

这是我在这里的第一篇文章,所以如果我做错了什么或有什么不清楚的地方,我很抱歉。

在 javafx 中,我有一个包含大约 5 列的树表视图,第一列仅显示对象名称的字符串。在设置单元格值工厂方法中,我只需获取我的对象的名称属性,如下所示。

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"

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

再次,为任何不清楚的地方道歉!

4

1 回答 1

2

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

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

  1. 将定义为 StringProperty 的 styleProperty 添加到 Foo。
  2. 在单元格工厂提供的单元格中,随着附加到单元格的 foo 对象发生变化,取消绑定单元格的 styleProperty,然后将单元格的 styleProperty 绑定到 Foo 项的 styleProperty。

那么当你修改一个Foo对象的styleProperty时,你的TreeTable中显示的foo的样式会同时自动改变。

于 2013-08-14T07:31:14.680 回答