绑定数据触发更改后 Swing/JTable 不更新

2023-12-04

我有一个绑定到我的 EventTracker bean 的 JTable,本质上是一个列表的包装器,我将仅将其用作附加/清除(即,一个简单的日志)。问题是,当我将条目添加到列表并尝试触发事件时,我没有看到任何更改。我正在使用 NetBeans IDE。

EventTracker bean 将添加到视图中并实例化为 eventTracker1。从那里,我右键单击表格并选择“表格内容...”。表模型绑定到eventTracker1,绑定表达式为'${eventList}'。列已正确设置以对 eventList 中的条目进行操作。

// From inside EventTracker.java
public static final String EVENT_LIST_PROPERTY = "eventList"; 
public List getEventList() {
    System.out.println("Handing out eventList with size: " + Integer.toString(eventList.size()));
    return eventList;
}

public void setEventList(List incomingList) {
    List oldList = eventList;
    eventList = new ArrayList(incomingList);
    propertySupport.firePropertyChange(EVENT_LIST_PROPERTY, oldList, eventList);
}

firePropertyChange 方法似乎符合规范,因此当我的外部代码在 setEventList 上操作时,它似乎会触发事件,因为然后调用 getEventList 并且列表大小按预期增加。只是表格没有渲染。我该怎么做才能使这项工作成功?


假设您的数据模型源自AbstractTableModel,您可以显式更新模型并触发在抽象父级中实现的适当更新方法。此外,更新必须发生在EDT,通常使用invokeLater()。也可以看看监听数据变化 and 触发数据更改事件.

EventQueue.invokeLater(new Runnable() {

    @Override
    public void run() {
        // update model, which should fire the appropriate event
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定数据触发更改后 Swing/JTable 不更新 的相关文章

随机推荐