TreeTableView 不刷新数据 - JavaFX 21

问题描述 投票:0回答:1

这个问题在这里被问了几次,但没有一个解决方案对我有用,可能是因为最新版本或其他问题。

我有一个属性很少的对象,其中一个属性在从网络返回响应时发生变化。我想在新值到达时动态更新树(可以逐个单元)。从我读到的内容来看,您应该使用 StringProperty 类来表示可观察的值。

我尝试过的事情:

  • 使用此属性注册列,

  • 向属性添加事件监听器并触发树更新

public interface PropertyState {
    StringProperty stateProperty();

和树项目(我从另一个答案中使用了这个......)

public class TableItem extends TreeItem<PropertyState> {
    public TableItem(PropertyState state) {
        super(state);
        state.stateProperty().addListener((obs, oldName, newName) -> {
           TreeModificationEvent<PropertyState> event =
               new TreeModificationEvent<>(TreeItem.valueChangedEvent(), this);
           Event.fireEvent(this, event);
        });
    }
}

最后是树状视图表:

TreeTableColumn<PropertyState, String> state = new TreeTableColumn<>("State");
state.setCellValueFactory(cellData -> cellData.getValue().getValue().stateProperty());

getColumns().add(state);
// more code to populate the tree with objects

所以无论我尝试什么,单元格值都不会改变。我可以追踪网络,StringProperty 确实发生了变化,但事件从未被触发,并且单元格保持原始值。

似乎正在进行一些包装或克隆...任何帮助将不胜感激。

按照要求制作了一个简单的代码示例。这似乎工作正常,所以我的原始代码中一定有错误。

https://github.com/gadieichhorn/78152140/tree/master

javafx java-21
1个回答
0
投票

对于未来的读者:

楼主自己解决了这个问题。他的原始代码中有一个错误。

这是他的仓库:https://github.com/gadieichhorn/78152140/tree/master

© www.soinside.com 2019 - 2024. All rights reserved.