【问题标题】:AutoCompleteDecorator with combo box带有组合框的 AutoCompleteDecorator
【发布时间】:2014-10-12 23:45:29
【问题描述】:

我有一个JComboBox,其中包含 200 个任务名称的列表。 JComboBox 中的初始选择为空白。

    JComboBox combo = new JComboBox();
    combo.setEditable(false);
    combo.addItem("");
    for (MyTask task : this.tasks) {
        combo.addItem(task.getTaskName());
    }
    combo.setSelectedIndex(0);
    combo.addActionListener(this);
    AutoCompleteDecorator.decorate(combo);

根据选择的任务,会弹出一个新的JFrame,并根据选择绘制一个图表。

这发生在actionPerformed 方法中。

 JComboBox jcmbType = (JComboBox) evt.getSource();
 String selectedJob = (String) jcmbType.getSelectedItem();
 // code for JFrame popup with graph here

由于任务数量巨大,我使用了AutoCompleteDecoratorSwingX api 来方便选择合适的任务。

但是,只要我输入第一个字母,以该字母开头的第一个任务就会被选中,JFrame 会弹出其图表。

如何控制?在用户选择他想要的任务之前,我不希望发生任何事情。

如果我在JComboBox 附近添加JButton,如何在JButton 动作监听器中读取JComboBox 的值?

【问题讨论】:

  • 没有人知道在 SwingX API(s) 中实现了哪些方法来初始化你的任何任务
  • 如果我在 JComboBox 附近添加一个 JButton,如何在 JButton 动作监听器中读取 JComboBox 的值? == Oracle 教程如何使用 Item/ActionListeners,更好的是 Swing Action
  • 使用 ListSelectionListener 添加到从 JComboBox 派生的 JList 中,如果您想监听 Key/Mouse Event,则更改直到 BasicComboBoxPopup 可见

标签: java swing autocomplete jcombobox swingx


【解决方案1】:

这就是 AutoCompleteDecorator 的工作方式。它(预)选择您尝试输入的项目。 由于您添加了一个 ActionListener,这将被调用(当项目被预选时)

您可以尝试以下操作:

  • 移除动作监听器
  • 添加 Key-Listener(Listener 可能对 ENTER 做出反应)

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2010-09-27
    • 1970-01-01
    • 2012-02-28
    • 2019-03-02
    • 1970-01-01
    • 2013-06-15
    • 2014-12-25
    • 2020-04-01
    相关资源
    最近更新 更多