Jpanel 的搜索框

Search Box for Jpanel

我正在创建一个应用程序,允许用户申请工作职位并上传他们的简历。我目前一直在尝试为管理员创建一个搜索框,以便能够搜索关键字。然后,该应用程序将查看所有 CV,如果找到此类关键字,它将显示包含该关键字的 Cvs 列表。我对 Gui 设计和应用程序创建还很陌生,所以不确定如何去做。我希望通过 java 完成它并使用 Eclipse Window 构建器来帮助我设计它。任何帮助,提示,建议都将不胜感激。谢谢。

好吧,这种不正确的设计方法是因为在给定文件夹的所有文件中实时搜索单词会很慢并且在很长时间内不可持续 运行。理想情况下,您应该为所有 CV 的关键字编制索引。搜索应该 运行 在索引上,然后获取该索引的关联 CV(想想类似于标签的索引)。有很多索引选项 - 简单的数据库索引或使用 Apache Lucene 或按照以下步骤使用地图创建索引并引用此索引进行搜索。

  • 创建地图Map<String, List<File>>以保持关联 文件的关键字

  • 遍历所有文件,并针对其中的每个单词 每个文件,将该文件添加到与该单词对应的列表中 你的索引图

这是适合您的 java 代码,但我仍然建议更改您的设计方法并使用索引。

File dir = new File("Folder for CV's"); 
if(dir.exists()) 
{ 
  Pattern p = Pattern.compile("Java"); 
  ArrayList<String> list = new ArrayList<String>(); // list of CV's

  for(File f : dir.listFiles())
  {
    if(!f.isFile()) continue;
    try
    {
      FileInputStream fis = new FileInputStream(f);
      byte[] data = new byte[fis.available()];
      fis.read(data);
      String text = new String(data);
      Matcher m = p.matcher(text);
      if(m.find())
      {
        list.add(f.getName()); // add file to found-keyword list.
      }
      fis.close();
    } 
    catch(Exception e)
    {
      System.out.print("\n\t Error processing file : "+f.getName());
    }

  }
  System.out.print("\n\t List : "+list); // list of files containing keyword.
} // IF directory exists then only process.
else
{
  System.out.print("\n Directory doesn't exist.");
}

在这里您可以得到 "Java" 的文件列表。正如我所说,使用索引 :)

感谢您花时间研究我的问题。 我实际上已经提出了自己的解决方案。它可能非常业余,但对我有用。

    JButton btnSearch = new JButton("Search");
    btnSearch.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent arg0) 
        {
            list.clear();
            String s  = SearchBox.getText();
            int i = 0,present = 0;
            int id;
            try
            {
                Class.forName(driver).newInstance();
                Connection conn = DriverManager.getConnection(url+dbName,userName,password);
                Statement st = conn.createStatement();
                ResultSet res = st.executeQuery("SELECT * FROM javaapp.test");
                while(res.next())
                {
                    i = 0;
                    present = 0;
                    while(i < 9)
                    {
                        String out = res.getString(search[i]);
                        if(out.toLowerCase().contains(s.toLowerCase()))
                        {
                            present = 1;
                            break;
                        }
                        i++;
                    }
                    if(tglbtnNormalshortlist.isSelected())
                    {
                        if(present == 1 && res.getInt("Shortlist") == 1)
                        {
                            id = res.getInt("Candidate");
                            String print = res.getString("Name");
                            list.addElement(print+" "+id);
                        }
                    }
                    else
                    {
                        if(present == 1 && res.getInt("Shortlist") == 0)
                        {
                            id = res.getInt("Candidate");
                            String print = res.getString("Name");
                            list.addElement(print+" "+id);
                        }
                    }
                }
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    });