0

我正在使用 DefaultComboBoxModel 来管理我的应用程序中各种 JComboBoxes 的数据。

我想在数据加载或重新加载时禁用这些组合框(或显示“正在加载...”文本并将指针设置为沙漏)。

有没有办法通知 JComboBox 模型正在重新加载数据?

重新加载发生在一个单独的线程中。

4

3 回答 3

3

AbstractListModel是一个名为 的函数addListDataListener(ListDataListener l)。现在您可以实现自己的监听器,当方法fireContentsChanged(Object source, int index0, int index1)被调用时会收到通知(这将在后台完成,您不需要这样做)。

抽象列表模型

于 2012-10-19T15:34:04.233 回答
3
于 2012-10-19T15:35:39.350 回答
3

我会为后台任务使用 SwingWorker,我会setEnabled(false)在 SwingWorker 的后台线程运行时调用 JComboBoxes,然后在线程完成时重新启用 JComboBoxes。这可以通过将 PropertyChangeListener 添加到 SwingWorker 来侦听其 state 属性并在 StateValue.DONE 时收到通知来确定。请注意,模型本身应仅在 Swing 事件线程上更新。因此,例如,如果数据来自数据库,则在后台线程中从数据库中获取信息,但将其传递给事件线程上的组​​合框模型。SwingWorker 的进程/发布方法对将是执行此操作的好方法。

于 2012-10-19T15:50:46.903 回答