带有组合框的AutoCompleteDecorator

时间:2014-08-19 18:46:45

标签: java swing autocomplete jcombobox swingx

我有一个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

由于任务数量巨大,我使用了AutoCompleteDecorator api的SwingX来帮助选择适当的任务。

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

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

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

1 个答案:

答案 0 :(得分:0)

这就是AutoCompleteDecorator的工作原理。它(预)选择您要输入的项目。 由于您添加了一个ActionListener,因此将调用此方法(当项目是预先选择时)

您可以尝试执行以下操作:

  • 删除Action-Listener
  • 添加Key-Listener(侦听器可能会对ENTER做出反应)