我有一个绑定到我的 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(使用前将#替换为@)