我用SWING做了一個介面,先用條件從數據庫篩選出資料傳入ShowTable當中,表頭有該Table的所有Column的欄位。現在我要點選此Table當中的某一列,要如何把此列的所有明細回傳到表頭勒?我上網查的結果,是有看到這一個Code,是寫在宣告Table當中JTable tbBook = new JTable(){
    public void valueChanged(ListSelectionEvent e){
      super.valueChanged(e);
      //呼叫基礎類別的valueChanged()方法, 
      //否則選取動作無法正常執行
 
      int selRow = tbBook.getSelectedRow();
      //取得表格目前的選取列
 
      //若沒有選取列則終止執行方法
      if(selRow == -1) return;
 
      //將選取列的資料, 依序設定給文字欄
      for(int i = 0; i < tfInput.length; i++){
        tfInput[i].setText(
          dtmBook.getValueAt(selRow, i).toString());
      }
    }
  };底下是我原始的CODE,我試過放在網路上講的地方,但是都沒獲取TABLE當中的資料傳回表頭。因此請教各位大大應該要如何寫...public class SampleSystemMainFrame extends javax.swing.JFrame {
   AbstractTableModel TableModel;
       Vector tDetail;
       int SelRow;
    String[] tTitle =new String [] {
                "客戶代號", "樣品製單", "紙板編號", "季節", "GROUP","NAME","COLOR","接單日","開單日","楦頭編號","楦頭尺寸","結構","客戶要樣雙數","留底雙數","印刷尺寸","樣品種類","圖檔一","圖檔二","圖檔三","製造單備註","修改日期","客戶要樣日","實際完成日"
           };
public SampleSystemMainFrame() {
        tDetail = new Vector();        //設定TableModel的內容
TableModel = new AbstractTableModel(){
         
  public   int   getColumnCount(){  
  return   tTitle.length;}
  public   int   getRowCount(){  
  return   tDetail.size();}  
       
  public   Object   getValueAt(int   row,int   column){  
  if(!tDetail.isEmpty())  
  return    
  ((Vector)tDetail.elementAt(row)).elementAt(column);  
  else  
  return   null;}
  public   String   getColumnName(int   column){  
  return   tTitle[column];}  
  public   void   setValueAt(Object   value,int   row,int   column){}  
          
  public   Class   getColumnClass(int   c){  
  return   getValueAt(0,c).getClass();  
  }  
        
  public   boolean   isCellEditable(int   row,int   column){
  return   false;}};
    initComponents();
  ShowTable =new JTable(TableModel);
   ShowTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
   }private void alldataActionPerformed(java.awt.event.ActionEvent evt) {
try{
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
       java.sql.Connection conn = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shoedata","sa","84368493");
       Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery("select * from sample_head");
        tDetail.removeAllElements();
        TableModel.fireTableStructureChanged();         
        while(rs.next()){
            Vector rec_tDetail =new Vector();
            for(int i=1;i<=tTitle.length;i++)
        rec_tDetail.addElement(rs.getString(i));
        tDetail.addElement(rec_tDetail);
        }
        TableModel.fireTableStructureChanged();
        
        stmt.close();
        conn.close();
  }catch (Exception ex) {
        Logger.getLogger(SampleSystemMainFrame.class.getName()).log(Level.SEVERE, null, ex);
        ex.printStackTrace();} 
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【handsomebob】截止到2008-07-23 16:54:20的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:0.00  %               结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    我再說明一下
    網路上看到的這個CODEJTable tbBook = new JTable(){
        public void valueChanged(ListSelectionEvent e){
          super.valueChanged(e);
          //呼叫基礎類別的valueChanged()方法, 
          //否則選取動作無法正常執行
     
          int selRow = tbBook.getSelectedRow();
          //取得表格目前的選取列
     
          //若沒有選取列則終止執行方法
          if(selRow == -1) return;
     
          //將選取列的資料, 依序設定給文字欄
          for(int i = 0; i < tfInput.length; i++){
            tfInput[i].setText(
              dtmBook.getValueAt(selRow, i).toString());
          }
        }
      };我把  //將選取列的資料, 依序設定給文字欄改成底下這樣,一樣沒反應。所以是不是我的表格沒有做到Listener?javax.swing.JOptionPane.showMessageDialog(null,"Test!");