当前位置: 首页 > 面试题库 >

绑定数据触发更改后,Swing / JTable无法更新

羊舌旭尧
2023-03-14
问题内容

我有一个绑定到我的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);
}

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


问题答案:

假设您的数据模型来自AbstractTableModel,则可以显式更新模型并触发抽象父级中实现的适当更新方法。此外,通常必须使用EDT在EDT上进行更新invokeLater()。另请参阅
侦听数据更改


触发数据更改事件

EventQueue.invokeLater(new Runnable() {

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


 类似资料:
  • 这个问题可能已经得到了回答,我读过很多类似的,但对我不起作用。因此,我的具有扩展的自定义表模型。我的数据是和列名。那么,当我的数据发生更改时,如何更新表呢?我一直在使用,它正在工作,但它将我的自定义单元格呈现器重置为默认值。谢了。

  • 问题内容: 我有一个针对ui-select2下拉菜单的手表设置(来自ui-bootstrap)。手表会在加载时触发,但不会在数据更改时触发,我不知道为什么。 不应用模型更改或不使用第三个参数进行相等性比较(至少来自我的代码)不是一个常见的问题。 我需要怎么做才能使其点火? 这是一个说明问题的小问题。 问题答案: 我修好了一些东西。 http://plnkr.co/edit/5Zaln7QT2gET

  • 问题内容: 由于声誉的限制,这是对先前问题的回答的后续问题。 但是想象一下一个有变化的列的大桌子。您必须比较每列,如果数据库发生更改,则必须调整触发器。而且比较硬编码的每一行都没有“感觉”好:) 是的,但这就是进行的方式。 附带说明一下,在更新之前先检查一下也是一种好习惯: 在您的示例中,这将使其更新(从而覆盖)两行而不是三行。 我想知道在处理NULL值时是否有更有效的方法来测试每个字段的更改。

  • 我已经学会了如何在帧中显示JTable,但我不知道如何实际更改数据。我已经读了很多关于这个主题的教程,但似乎没有什么是合适的。你能回答一些关于下面代码的问题吗? 1)在actionListener中,我调用tab.getModel()。getValueAt(1,1)和tab.getValueAt(1,1)。我得到相同的数据,“佩蒂”如果“getModel()”提供相同的数据,它是必要的吗? 我认为

  • 问题内容: 我试图使自己熟悉JTables,TableModels,JTableHeaders,渲染器等。我试图制作一个简单的虚拟表(出于练习目的),看起来像这样: 我还希望B2单元格-并且只有该单元格-具有蓝色(Color.BLUE)背景-所有其他单元格都可以具有自动分配的Swing默认颜色。 我的代码在下面,并且基于我在本网站和整个互联网上发现的无数示例。但是我没有得到想要的结果。相反,我得到

  • 问题内容: 我有一个动作,可以从用户那里接收一些参数(例如日期)。此操作产生许多不同的报告,因此它具有许多不同的方法。在每种方法之前,我都需要 调整 这些参数(将时间设置为午夜)。该方法在绑定参数之前执行。是否有其他拦截器或其他允许我执行此操作的约定? 问题答案: 使用 如果您使用的是 Convention Plugin,请立即 对其进行操作