在KeyPress事件中动态添加项目时,可编辑组合框自动清除

时间:2019-06-20 07:42:26

标签: java swing jcombobox

我使用组合框制作了一个搜索栏,当用户键入任何字符串时,它会从数据库中检索匹配的数据并填充组合框模型。我正在使用KeyListener刷新每个按下的键的列表。 问题是,对于每个键事件触发器,我的可编辑组合框字段也将被清除,我希望输入字符串保留在组合框编辑器中。

如果我不填充组合框模型,则不会清除它,即组合框编辑器中的字符串保持完整且可见。 但是,当我向组合框添加项目或设置模型时,它会清除组合框的可编辑字段。

public void keyReleased(KeyEvent e) {

        DefaultComboBoxModel searchBoxModel=new DefaultComboBoxModel();
        searchBoxModel.removeAllElements();
        String searchString=searchBox.getEditor().getItem().toString();
        System.out.println("Search string "+searchString);
        locationQuery="Select city,locality from LocationAndPricing where "
                    + "city LIKE '%"+searchString+"%' "
                    +"OR locality LIKE '%"+searchString+"%';";
        try {
                Statement stmt=conn.createStatement();
                ResultSet r=stmt.executeQuery(locationQuery);
                while(r.next())
                {
                    searchBoxModel.addElement(r.getString("city"));
                    searchBoxModel.addElement(r.getString("locality"));
                }

                searchBox.setModel(searchBoxModel);
                searchBox.setSelectedIndex(-1);
                searchBox.showPopup();

                //cityString=cityString.substring(0,cityString.length()-1);
                System.out.println("Final city string : "+cityString);


        } 
        catch (SQLException e1) {
                System.out.println(e1.getMessage());
            }
    }

我不希望组合框编辑器在每次按键时都会清除自身,而实际上会显示用户键入的整个字符集。

0 个答案:

没有答案