2011-08-30 43 views
-1

有人可以告訴我,我的錯誤在哪裏? 我想用數據填滿表,但我不能,總是得到空表。 這裏是我的代碼框架:Java添加表格數據問題

import java.util.*; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 


public class Rinktis extends JFrame { 
    private final JScrollPane scrollPane = new JScrollPane(); 
    private JTable table; 

     public Rinktis() 
     { 

     super(); 
     setBounds(100, 100, 861, 375);  
     try { 
      jbInit(); 
     } catch (Throwable e) { 
      e.printStackTrace(); 
     }  
    } 

    Vector<Vector<String>> data1 =new Vector<Vector<String>>(); 
Vector<String> heading1 = new Vector<String>(); 
    public void tab(Vector heading, Vector data) 
    { System.out.println(data); 
     System.out.println(heading);  
     data1=data; 
     heading1=heading; 
     System.out.println(data1); 
     System.out.println(heading1); 
    } 
    private void jbInit() throws Exception { 
     getContentPane().setLayout(null); 
     getContentPane().add(scrollPane); 
     scrollPane.setBounds(10, 10, 825, 176);  

     table = new JTable(data1,heading1); 
     scrollPane.setViewportView(table); 
    } 

} 

以下是我把它從另一個框架:

protected void rinktisButton_1_actionPerformed(ActionEvent e) 
{  Rinktis frame = new Rinktis(); 
     frame.setVisible(true); 
    try { 
     db.getClients(); 
    } catch (Exception e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
} 

db.getClients();我打電話rinktis.tab(columnHeads,v); System.out.println給了我所有的數據正確,但表是空的。

+0

從'db.getClients()不加數據;'到JTable,沒有別的我假設三種狀態1)你真的忘記那個2 )對你來說非常糟糕的一天是今天,因爲沒有人會爲你做你的工作3)你必須將你的問題分割成3-4個分離線程a)關於JDBC,b)如何將ResultSet傳遞給TableModel,c)如何LayoutManagers工作d)如何JTable工作 – mKorbel

回答

2

改變你的選項卡的功能是這樣的:

public void tab(Vector heading, Vector data) 
    {  
     table.setModel(new DefaultTableModel(data,heading)); 
    } 
+0

+1,這個答案不存在,當我說打字:) – camickr

+0

@camickr仍然我認爲你的答案是更好的,因爲它有關於問題的額外信息,所以我會upvote它:) –

+0

這是不夠的 –

2

如需詳細解答,您需要發表SSCCE。無論如何,你似乎將錯誤的類型傳遞給JTable constructor

你需要傳遞的對象(Object [][])或Vector<Vector<Object>>不是普通的一維向量,相同的二維數組作爲的tableHeader

我覺得這裏的問題:

table = new JTable(data1, heading1); 
     //data1 need to of type Object[][] or Vector<Vector<Object>> 
     //heading1 need to of type String[] or Vector<String> 

這裏有一個tutorial

+0

沒有你的錯,我可以傳遞矢量而不是2d數組 –

+0

有一個'JTable'構造函數接受兩個'Vector'參數。 – lhballoti

+0

mmm.you是對的。但請記住data1 Vector應該是包含Vector的Vector。是這樣嗎?無論如何沒有SSCCE或完整的代碼很難說出發生了什麼。 – Heisenbug

2

問題是表不知道你改變了數據。您可以在創建表格時加載數據。然後它應該顯示出來很好(也許首先試試)。然後在第二步中,您應該直接使用tablemodel並在那裏更改數據。每當你這樣做時,你可以通知表更新。

或者,如果您已經知道您的標題,則可以設置它並僅在稍後添加數據。這也應該工作。不過,我不建議這樣做。