Java-可搜索的JComboBox-键键入选择和可见的下拉列表

时间:2019-05-06 12:09:21

标签: java swing jcombobox

我需要创建一个可编辑的JComboBox,在其中根据用户在框中键入的字符从初始列表中过滤掉可能的选择。我能够在StackOverflow上找到解决方案,但仍然有两个问题:

  1. 当我输入一个键时,它会显示为选中状态,因此按下了下一个键,而不是添加到当前文本中 文本。我希望用户能够像输入JTextField一样输入。

  2. 我希望在键入时显示前5个(n?)可能的匹配值。

我尝试在线阅读规范,但找不到解决方法。

JTextComponent editor = (JTextComponent) myComboBox.getEditor().getEditorComponent();
myComboBox.setSelectedItem("");
editor.addKeyListener(new KeyAdapter() {
   public void keyReleased(KeyEvent evt) {
     String[] myValues = Utils.myValues(..get a list o value somehow ...);

     String searchText = (String) myComboBox.getEditor().getItem();

     List<String> filterArrayString = new ArrayList<>();
     for (int i = 0; i < myValues.length; i++) {
       if (myValues[i].toLowerCase().contains(searchText.toLowerCase())) {
           filterArrayString.add(myValues[i]);
       }
     }
    myComboBox.setModel(new DefaultComboBoxModel(filterArrayString.toArray()));
    myComboBox.getEditor().setItem(searchText);
   }
});

按字母时过滤,选择字母

Filter when a letter is typed, it got selected

0 个答案:

没有答案