2013-10-05 88 views
-1

我正在使用IntelliIdea IDE及其內置GUI設計器,這就是爲什麼有一些代碼「丟失」。我試圖創建自己的DefaultTableModel類,但沒有顯示出來。沒有錯誤或警告。我知道在stackoverflow上有很多其他的JTable問題,但沒有什麼幫助。我在另一個類的main-Method中調用createUIComponents方法。JTable不會顯示任何東西

框架:

public class SWOFrame { 
private JTable  tbMainTable; 
private JPanel  mainPanel; 
private JButton  btnAdd; 
private JTextField tfWork; 
private JTextField tfHours; 
private JScrollPane spTableScroller; 

private String[][] testData = {{"hallo", "ianac"}, {"sssfs", "faffe"}}; 

public void createUIComponents() { 
    JFrame frame = new JFrame("SWOFrame"); 
    frame.setContentPane(new SWOFrame().mainPanel); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    tbMainTable.setModel(new SWOTableModel(testData)); 

    frame.pack(); 
    frame.setVisible(true); 
} 

tableDataModel:

public class SWOTableModel extends DefaultTableModel { 

    String[] columnNames = {"Work", "Hours"}; 

    SWOTableModel(Object[][] data) { 
     for(String name : columnNames) 
      addColumn(name); 

     for(int i=0; i<data.length; i++) 
      addRow(data[i]); 
    } 
} 
+1

在哪裏添加表? – Masudul

+1

這個「frame.setContentPane(new SWOFrame()。mainPanel);」看起來對我很可疑... – MadProgrammer

+0

它被autocreated,所以我甚至沒有看過它,愚蠢的我。刪除「新的SWOFrame()」。解決了這個問題,謝謝。 – Christian

回答

0

要顯示錶,你需要添加JFrame表。您錯過了將表添加到JFrame。最好將JTable添加到JScrollPane,並將JScrollPane添加到JFrame。添加以下代碼:

spTableScroller =new JScrollPane(tbMainTable); 
frame.add(spTableScroller); 
+0

圖形用戶界面設計器爲我做到了這一點,並將代碼存儲在一個單獨的文件中。這就是爲什麼我寫道,有一些代碼「失蹤」。 – Christian