第一个问题如上图 如何让那几个“宿舍号”那一行自动适应那个表框?
  第二个问题:如何让每一次按确定之后 把上一次出现的内容清空?谢谢............小弟在这里感谢大家了        

解决方案 »

  1.   

    import java.awt.*;
    import java.sql.*;
    import java.util.*;
    import java.awt.event.*;
    import javax.swing.*;import javax.swing.*;
    import javax.swing.table.DefaultTableColumnModel;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumn;
    public class dormitory_Inquire extends JFrame implements ActionListener{
    Vector rowVectors=new Vector();;
    Vector columnHeaderVector=new Vector();
    JButton b1,b2;
         JTextField txt;
         JComboBox box;
         JTable table;
         JScrollPane p1 = new JScrollPane();
         boolean flag = false;
         String s_id;
         int astu_id;
         DefaultTableModel  tableModel=new    DefaultTableModel ( );
         dormitory_Inquire f;
         ResultSet r;
       Connection conn;
       Statement stm;
       
       //构造方法  
         dormitory_Inquire()
         {   super("宿舍查询");
          setLayout(null);
          setSize(1080,540);
          setResizable(false);
          setVisible(true);
           
          txt = new JTextField(50);
          add(txt);
          txt.setBounds(320, 20, 250, 25);
          box = new JComboBox();
          add(box);
          box.setBounds(580, 20, 90, 25);
          box.addItem("宿舍楼号");
          box.addItem("宿舍号");
          box.addItem("姓名");
          box.addItem("性别");
          box.addItem("空缺人数");
          b1 = new JButton("确定");
          add(b1);
          b1.setBounds(380, 50, 70, 25);
          b1.addActionListener(this);
          
          b2 = new JButton("取消");//取消按钮的监听
          add(b2);
          b2.setBounds(480, 50, 70, 25);
          b2.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e){
          String cmd=e.getActionCommand();
     if(cmd.equals("取消"))
     txt.setText("");
          }
         });
          
          //表
          String[ ]columnHeaderVector = {""};
     table = new JTable();
     JScrollPane srp = new JScrollPane(table);
    srp.setBounds(0, 80, 1080,500);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        add(srp);
        table.setModel(tableModel);
         tableModel.setColumnIdentifiers(columnHeaderVector);
        for(int i=0;i<table.getColumnCount();i++){
            DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
            TableColumn col = colModel.getColumn(i);
            int width = 10;         TableCellRenderer renderer = col.getHeaderRenderer();
            if (renderer == null) {
              renderer = table.getTableHeader().getDefaultRenderer();
            }
            Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false,
                false, 10, 10);
            width = comp.getPreferredSize().width;
            col.setPreferredWidth(width+180);
        }
      }
         
         public void actionPerformed(ActionEvent e){
         String cmd = e.getActionCommand();
         if(e.getSource() instanceof JButton){
         if(cmd.equals("确定"))
         {
         try {
         rowVectors.clear();
         columnHeaderVector.clear();
    check();

         } catch (SQLException e1) {

    e1.printStackTrace();

         }
         }
         }
          }
                     public void check() throws SQLException
                     { 
                     
                      if(txt.getText().equals(""))
                       {
                      JOptionPane.showMessageDialog(f,"请填写查询条件");
               return;
               
                       }
                     
                    
               try{ 
                
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                  
               }catch(ClassNotFoundException e){
                
                   System.out.println("加载驱动程序失败,请检查");
                  
                  }
                     try{
                      
                         String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D://AccomodationControl.mdb" ;
                     
                         conn = DriverManager.getConnection(url);
                     
                         stm = conn.createStatement();
                     
                     if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("宿舍楼号"))
                     {
                      
                       r = stm.executeQuery("select 宿舍楼号,宿舍号,姓名,性别,空缺人数  from 宿舍查询  where 宿舍楼号= '"+txt.getText()+"' ");
                       
                     }
                     
                     else
                      if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("宿舍号"))
                      {
                      
                        r = stm.executeQuery("select 宿舍楼号,姓名,性别,空缺人数  from 宿舍查询  where 宿舍号= '"+txt.getText()+"' ");
                        
                      }
                      else
                     if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("姓名")){
                      
                     r = stm.executeQuery("select 宿舍楼号,宿舍号,姓名,性别 ,空缺人数 from 宿舍查询  where 姓名= '"+txt.getText()+"'");
                     }
                     else
                     if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("性别")){
                      
                      r = stm.executeQuery("select 宿舍楼号,宿舍号,姓名,空缺人数  from 宿舍查询  where 性别= '"+txt.getText()+"'");
                     }
                     else
                      if((!(txt.getText().equals("")))&& box.getSelectedItem().equals("空缺人数"))
                      {
                     r = stm.executeQuery("select 宿舍楼号,宿舍号,空缺人数 from 宿舍查询   where 空缺人数= '"+txt.getText()+"'");
                          
                      }
                     
                     int columnCount =r.getMetaData().getColumnCount();
                     
                     Vector singleRow=new Vector();
                     while(r.next())
                  {
                   
            
                  for(int i=0;i<columnCount;i++)
               singleRow.addElement(r.getObject(i+1));
                 
                   rowVectors.addElement(singleRow);
                   
                 }
                     
                     ResultSet rsColumns=conn.getMetaData(). getColumns(null,null,"宿舍查询",null);
                     
                  while(rsColumns.next())
                 {
                      columnHeaderVector.addElement(rsColumns.getString("COLUMN_NAME"));
                
                 }
                  
                    tableModel.setDataVector(rowVectors,columnHeaderVector);
                  
                    stm.close();
                 conn.close();
                     
                     }catch(SQLException ae){
                      
                      JOptionPane.showMessageDialog(f,"没有此信息");
                    
                     }
                     
        }                    
                     
                     
                 public static void main(String[] args){
                  new dormitory_Inquire();
                 }
    }
    这是代码  查询宿舍号那里和空缺人数那里无法查询