【问题标题】:How to display search result in jtable?如何在jtable中显示搜索结果?
【发布时间】:2010-11-20 10:08:26
【问题描述】:

我正在使用 netbeans IDE。我喜欢检查 canni 是如何从使用 netbeans 绑定映射到表的 jtable 中实际搜索的。我想刷新 jtable 以显示与我的搜索条件匹配的记录

【问题讨论】:

    标签: java swing


    【解决方案1】:
    DefaultTableModel model = new DefaultTableModel( results from your search );
    table.setModel( model );
    

    编辑:见Table From Database

    【讨论】:

    • 您好,我不太明白如何将结果集放入 jtable?
    【解决方案2】:

    首先我在 Jcombo 框中获取字段名称。

    private void Text1KeyReleased(java.awt.event.KeyEvent evt) {                                  
    
            JTetclear();
            Connection con = null;
            Statement stmt = null;
    
     try {
    
            con = javaconnect.MySqlServer();
            stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM `" + Combo1.getSelectedItem() + "` where `" +  Combo2.getItemAt(0).toString() + "` Like '%" + Text1.getText() + "%' or `" +  Combo2.getItemAt(1).toString() + "` Like '%" + Text1.getText() + "%' or `" +  Combo2.getItemAt(2).toString() + "` Like '%" + Text1.getText() + "%' or `" +  Combo2.getItemAt(0).toString() + "` Like '%" + Text1.getText() + "%' order by PARTNO;");
            ResultSetMetaData md = rs.getMetaData();
            DefaultTableModel tm = (DefaultTableModel) Table1.getModel(); // for changing column and row model
            Combo2.removeAllItems();
            tm.setColumnCount(0); tm.setRowCount(0); // clear existing columns and clear existing rows     
                for (int i = 1; i <= md.getColumnCount(); i++) {
                    tm.addColumn(md.getColumnName(i));
                    Combo2.addItem(md.getColumnName(i));//l load the column name in the combobox 
        }
            tm.setRowCount(0);  // clear existing rows     
                while (rs.next()) {      //  Get row data
                    Vector row = new Vector(md.getColumnCount());
                    for (int i = 1; i <= md.getColumnCount(); i++) {
                        row.addElement(rs.getObject(i));
        }
            tm.addRow(row);
            Table1.getColumnModel().getColumn(0).setPreferredWidth(160);
            Table1.getColumnModel().getColumn(1).setPreferredWidth(380);
        }
            rs.close();
            stmt.close();
        }   catch (Exception ex) { 
            JOptionPane.showMessageDialog(this, ex, ex.getMessage(), WIDTH, null);
        }
        }   
    

    【讨论】:

      【解决方案3】:

      我就是这样做的。不是专家。

      返回结果集的方法:

      public ResultSet actualInventoryInCencos(int idCencos) throws SQLException {
      
          try {
              SQL sql = new SQL();
              PreparedStatement selectPS = sql.createPStatement(cf.SELECT_INVENTORY_BY_CENCOS);
              selectPS.setInt(1, idCencos);
              ResultSet resultSet = selectPS.executeQuery();
              return resultSet;
          } catch (SQLException | NullPointerException e) {
              System.out.println(cf.ERROR_SQL + e);
              cf.e(1);
              return null;
          }
      
      }
      

      TableDAO 中接受结果集并生成并返回包含所有查询数据的 DefaultTableModel 的方法。

      public DefaultTableModel createTable(ResultSet rs) throws SQLException {
      
          ResultSetMetaData metaData = rs.getMetaData();
          int columnCount = metaData.getColumnCount();
      
          //ColumnsNames
          Vector<String> columnsNames = new Vector<>();
          columnsNames.add("Column1");
          columnsNames.add("Column2");
          columnsNames.add("Column3");
      
          Vector<Vector<Object>> tableData = new Vector<>();
      
          while (rs.next()) {
              Vector<Object> vector = new Vector<>();
              for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
                  vector.add(rs.getObject(columnIndex));
              }
              tableData.add(vector);
          }
      
          return new DefaultTableModel(tableData, columnsNames);
      }
      

      以及将新模型设置为JTable 的行:

      yourJTable.setModel(tableDAO.createTable(inventory.actualInventoryInCencos(userData.getUserId())));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 2020-07-08
        • 2016-12-11
        • 1970-01-01
        • 2014-04-21
        • 2013-01-25
        相关资源
        最近更新 更多