使用JComboBox作为搜索框
我正在使用a JComboBox
从sql数据库搜索查询。这是我的代码。
private void srKeyTyped(java.awt.event.KeyEvent evt){ sr.removeAllItems();
String sch = ((JTextField)sr.getEditor().getEditorComponent()).getText();
String schh = "SELECT * FROM tbl WHERE name LIKE '" + sch + "%';";
search = conn.getQuery(schh);
try {
while (search.next()) {
String item = search.getString("name");
sr.addItem(item);
}
} catch (SQLException ex) {
Logger.getLogger(dataprocess.class.getName()).log(Level.SEVERE, null, ex);
}
sr.setSelectedItem(null);
sr.setPopupVisible(true);
System.out.println(sch);
}
sr
= JComboBox
但是,当我在组合框中键入一个字母时,它将添加数据库中的所有项目。我知道System.out.println(sch);
总是给出一个空字符串。而且,只要我键入一个字母,组合框的文本字段就会为空(我不能键入两个字母的单词)。如何解决这个问题?谢谢。
回答:
问题的原因如下:
sch
始终为空是因为您在打电话sr.removeAllItems();
之前先打电话String sch = ((JTextField)sr.getEditor().getEditorComponent()).getText();
。这意味着,在JComboBox
获得所选内容之前,将清除(与所选内容一起)的内容。
解决方案:sr.removeAllItems();
收到选定的项目后,致电。
- 组合框变为空,因为
sr.setSelectedItem(null);
在重新填充组合框后您将在最后调用。
解决方案:如果要输入文本,则 sr.getEditor().setItem(scr);
仅想法,但尝试将方法的内容包含在中,if statement
然后检查是否Enter
key已按下。这样,方法内容将仅在输入所需的字符串之后执行,而不是在每次按键时执行。
以上是 使用JComboBox作为搜索框 的全部内容, 来源链接: utcz.com/qa/406804.html