2017-04-21 49 views
0

我知道JTable通常放在JScrollPane中,但我不想滾動,我希望在添加一行時增長表。 我已經使用NetBeans IDE 8.2創建了一個swing應用程序,它幾乎可以完成我想要的操作,並將其放入JPanels,數據和標題放在單獨的面板中。我的JTable根本沒有顯示

我試圖去基礎和手工製作我需要的代碼,但它根本不顯示錶格。

public NewJFrame1() { 
    initComponents(); 
    JTable table = new JTable(); 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addColumn("Type"); 
    tableModel.addColumn("Folder"); 
    String[] row = {"Datum1","Datum2"}; 
    table.setModel(tableModel); 
    tableModel.addRow(row); 
    this.getContentPane().add(table.getTableHeader()); 
    this.getContentPane().add(table); 
} 
+1

應該在JScrollPane中顯示一個表格,以便正確顯示標題和數據。閱讀JTable API,您將在「如何使用表格」的Swing教程中找到指向使用表格基礎知識的鏈接。 – camickr

+0

^---他說的[如何使用表格](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) 和[如何使用滾動窗格](http:/ /docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html) – MadProgrammer

+0

'initComponents'表明您使用Netbeans表單編輯器,您可能會發現這會干擾您嘗試動態修改UI並且你最好不要使用它(表單編輯器) – MadProgrammer

回答

1

我認爲你應該模型所以從我所看到的,使用的是NetBeans和創建的JFrame設置表

table.setModel(tableModel); //add this to your code 

好。如果你是從設計將你的表不是有沒有必要爲你的constructor.Just簡單地創建另一個表:

public NewJFrame() { 
    initComponents(); 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addColumn("Type"); 
    tableModel.addColumn("Folder"); 
    String[] row = {"Datum1","Datum2"}; 
    tableModel.addRow(row); 
    jTable1.setModel(tableModel);// where jTable1 has been created and instantiated automatically by netbeans when you draged and dropt it to your frame , from the design. 
} 
+0

是的,對不起,我創建了一個減少版本來演示問題並錯過了!它仍然不顯示與他們連接。 – Denizen

+0

檢查我的編輯 –

+0

謝謝@Radu Soigan – Denizen

0

拉杜Soigan是正確時,JTable和TableModel的是它必須是單獨的對象使用setModel(tableModel)方法鏈接在一起,因爲表格不知道要顯示的數據在哪裏。對於自定義表模型,這也是一樣的,記得在設置模型後記得將它設置爲JTable。