JAVA文本框根据输入内容自动模糊查询(动态)

要做到文本框能根据自己输入的值去查询数据库的东西需要一些准备,思路就是要当按下文本框的时候就会弹出一个表格,表格就是根据你输入的值去查询数据库数据(对文本框增加删除操作都可以动态查询),然后就是要当查询到了的数据需要双击表格需要的内容行把表格界面设置不可见,大致的思路就是这样。


//默认表格模版的设置,添加表头和设置表格不可编辑
        dtm3=new DefaultTableModel(columnNames,0);
          table3=new JTable(dtm3){
              public boolean isCellEditable(int row, int column)
              {
                  return false;
                  }//表格不允许被编辑 }
              };
        String sql="select MrId,PaId,PaName,DeptName from Medical_records" ;
        databaseSearch1(sql,4);//当表格被显示时候即把数据库的所有数据调出来

         JScrollPane5.setViewportView(table3);//给表格添加滚动条
        panel1.add(JScrollPane5);
        JScrollPane5.setBounds(10, 0, 400,100);
        JScrollPane5.setVisible(false);

//tx1文本框添加事件,根据文本框内容的改变模糊查询到数据库内容,显示到表格中
         tx1.getDocument().addDocumentListener(new DocumentListener() 
         { 
             @Override
             public void removeUpdate(DocumentEvent e) {

            updata_combobox();
             }

             @Override
             public void insertUpdate(DocumentEvent e) {

                 updata_combobox();
             }

             @Override
             public void changedUpdate(DocumentEvent e) {

                updata_combobox();
             }

             private void updata_combobox(){
                 String s1=null;
                 s1=tx1.getText();  //根据S1的内容模糊查询数据库对应的数据
                 JScrollPane5.setVisible(true);//JScrollPane5是一个表格滚动条,让表格显示可见
                 String sql="select MrId,PaId,PaName,DeptName from Medical_records where MrId like  '%"+s1+"%'";//SQL语句
                     databaseSearch1(sql,5);  //把数据添加到表格中
                }
               });
//把数据添加到表格中
private void databaseSearch1(String sql, int i) {
        // TODO Auto-generated method stub
        Connection con;
          con=connect.getConnection();
          ResultSet rs;   
           try{
                int rowcount = dtm3.getRowCount() - 1;
                if (rowcount != -1) {
                    for (int i1 = rowcount; i1 >= 0; i1--) {
                        dtm3.removeRow(i1); // 删除Jtable中的所有行
                    }
                    dtm3.setRowCount(0); // 将Jtable中的行数设为零
                }       
                Statement stmt=con.createStatement();
                rs=stmt.executeQuery(sql);
                String[] data = new String[4];
                while (rs.next()) {
                    for (int j = 1; j <= 4; j++) {
                        data[j - 1] = rs.getString(j); // 取出数据库中的数组装载到数组中
                    }
                    dtm3.addRow(data); // 在Jtabl

                }

                con.close();
                    //设置表格隔行背景色(隔行背景色不同)    
    }catch(Exception err){
    }           
    }

JAVA文本框根据输入内容自动模糊查询(动态)_第1张图片
JAVA文本框根据输入内容自动模糊查询(动态)_第2张图片
JAVA文本框根据输入内容自动模糊查询(动态)_第3张图片

后面还需要给文本框添加事件以及表格的双击事件把表格视图设置不可见等就没贴代码了,自己琢磨,相信你行的,以上代码有不懂可以问问我,互相学习,菜鸟一枚,有不对的地方就直说。

你可能感兴趣的:(JAVA学习)