gpt4 book ai didi

java - 绑定(bind)数据触发更改后 Swing/JTable 未更新

转载 作者:行者123 更新时间:2023-12-04 06:46:40 25 4
gpt4 key购买 nike

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

EventTracker bean 被添加到 View 中并被实例化为 eventTracker1。从那里,我右键单击表格并选择“表格内容...”。表模型绑定(bind)到 eventTracker1,绑定(bind)表达式为 '${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() .另见 Listening for Data ChangesFiring Data Change Events .

EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
// update model, which should fire the appropriate event
}
});

关于java - 绑定(bind)数据触发更改后 Swing/JTable 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3671010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com