使用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);总是给出一个空字符串。而且,只要我键入一个字母,组合框的文本字段就会为空(我不能键入两个字母的单词)。如何解决这个问题?谢谢。

回答:

问题的原因如下:

  1. sch始终为空是因为您在打电话sr.removeAllItems();之前先打电话String sch = ((JTextField)sr.getEditor().getEditorComponent()).getText();。这意味着,在JComboBox获得所选内容之前,将清除(与所选内容一起)的内容。

解决方案:sr.removeAllItems();收到选定的项目后,致电。

  1. 组合框变为空,因为sr.setSelectedItem(null);在重新填充组合框后您将在最后调用。

解决方案:如果要输入文本,则 sr.getEditor().setItem(scr);

仅想法,但尝试将方法的内容包含在中,if statement然后检查是否Enter

key已按下。这样,方法内容将仅在输入所需的字符串之后执行,而不是在每次按键时执行。

以上是 使用JComboBox作为搜索框 的全部内容, 来源链接: utcz.com/qa/406804.html

回到顶部