当前位置: 首页 > 面试题库 >

使用JComboBox作为搜索框

平山
2023-03-14
问题内容

我正在使用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组件,我希望在其中的组合框中有一个JTable用于下拉选择。我扩展了ListCellRenderer,并且在弹出窗口中有一个表。 我想用两种不同的方式来呈现。第一个作为所选行的绑定列的标签,当弹出窗口不可见时。第二种是在弹出窗口可见时用JScrollPane显示表。 不幸的是,当我这样做时,弹出窗口被缩小到列表的行高,这只为表的列留下了空间。 如果我只是使用滚动

  • 当我试图获取以前插入到数据库中的更新数据时,我的代码中遇到了一些问题。邮递员的错误代码: “JSON分析错误:无法反序列化START_OBJECT令牌外的java.lang.Integer实例;嵌套异常为com.fasterxml.jackson.DataBind.JSONMappingException:无法反序列化START_OBJECT令牌外的java.lang.Integer实例\n位于[

  • 问题内容: 我想搜索一个XML值列,看是否包含一个字符串。我不知道架构,我想知道字符串是否包含在任何地方。我不知道XPATH是否可以在这种情况下工作。 相当于 错误:参数数据类型xml对于同类函数的参数1无效。 相关表格列 我要搜索的项目应该是一个属性。因此,如果上述方法不可能实现,那么包含该属性的任何内容都将是一个不错的选择。 问题答案: 最简单(但绝对不是最快执行)的方法是在将列传递给之前将其

  • 呃……这个项目如果没有什么特别之处就不叫 elasticsearch 了!现在一起来聊聊客户端的搜索操作。 在命名方案规范的前提下,客户端拥有一切的查询权限,也拥有获取 REST API 公开的一切参数的权限。现在来看看一些示例,方便你熟悉这些语法规则。 Match查询 以下是 Match 查询的标准 curl 格式: curl -XGET 'localhost:9200/my_index/my_

  • 问题内容: 我的团队正在与使用solr作为搜索索引的第三方CMS合作。我注意到,似乎作者使用Solr作为各种数据库,因为返回的每个文档都包含两个字段: Solr文档ID(基本上是类名和数据库ID) 整个对象的XML表示形式 因此,基本上,它针对Solr运行搜索,下载对象的XML表示,然后从XML实例化对象,而不是使用id在数据库中查找对象。 我的直觉告诉我这是一个不好的做法。Solr是一个搜索索引

  • 我需要将属性设置为not analysis以便弹性搜索不会删除标点符号等。