java - 如何指示 JComboBox 正在加载值?

标签 java swing jcombobox event-dispatch-thread jide

我有一个 JComboBox,它的值是通过网络检索的。

我正在寻找一种方法来向用户表明这一事实,当用户想要查看列表时,展开下拉列表,只有这样才会检索数据。 p>

基本要求包括:

  1. JComboBox 的下拉菜单不应锁定 EDT,但组合的操作在有值之前不应起作用。
  2. 用户应该知道何时检索到所有数据。
  3. 指示的大小(UI 空间)应尽可能小。

请注意,在用户想要查看组合的值(即展开下拉列表)之前不会检索数据。

我用过的解决方案:

我使用了 SwingWorker 来保持 UI 响应。使用 JIDE 的 Overlayable 和 JIDE 的 InfiniteProgressPanel 来覆盖组合框,后者会监听 worker。

最佳答案

为避免锁定 EDT,您的数据检索应在后台线程中完成。我会使用 SwingWorker 来查找和加载值,因为这提供了一个后台线程和其他好东西,使其对 Swing 非常友好。我将使 JComboBox 启用属性 false 直到加载所有值,然后通过 setEnabled(true) 启用它。您将知道 SwingWorker 是通过其 done() 方法(通过重写它)或通过向 SwingWorker 添加 PropertyChangeListener 并在其状态为 SwingWorker.StateValue.DONE 时收到通知来完成的

用户知道该过程已完成的一种方法是他们将看到组合框何时重新启用。如果您想要更明显的指示器,您可以显示 JProgressBar 或 ProgressMonitor。如果您希望 GUI 外观基本保持不变,这可以显示在对话框中。

关于java - 如何指示 JComboBox 正在加载值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8636896/

相关文章:

java - 如何用java.Swing移动乒乓 Racket ?

java - 我可以创建组合框类型的列表吗?

java - 存储和检索 ParseUsers 列表

java - JBoss 自定义登录模块只能工作一次

java - 为什么删除第一部分会改变答案? --(平方根倒数,java)

java - 使用 Java 的 Path2D 创建钢笔工具的问题

Java Circle to Circle 碰撞检测

java - 如何添加到JTable?

java - JComboBox 的行为与 JTextField 不同。我怎样才能让它看起来相似?

java - 如何将文本文件中的ArrayList填充到JCombobox