我使用组合框制作了一个搜索栏,当用户键入任何字符串时,它会从数据库中检索匹配的数据并填充组合框模型。我正在使用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());
}
}
我不希望组合框编辑器在每次按键时都会清除自身,而实际上会显示用户键入的整个字符集。