2012-03-07 121 views
0

我試圖添加一個jtable組件到我的jPanel,但我無法看到它。我究竟做錯了什麼?。將組件添加到jPanel java

table gui = new table(data,colum); 
mainPanel.add(gui.table); 

class table extends JFrame 
{ 
    public JTable table; 

    public table(Vector data, Vector colum) 
    { 
     setLayout(new FlowLayout()); 
     table = new JTable(data,colum); 
     table.setPreferredScrollableViewportSize(new Dimension(900,10)); 
     table.setFillsViewportHeight(true); 
     JScrollPane scrollPane = new JScrollPane(table); 
     add(scrollPane); 
    } 

} 
+0

請包括[SSCCE](http://www.sscce.org)。 – Moonbeam 2012-03-07 18:12:06

+0

這很混亂。爲什麼要添加東西到JFrame然後將它添加到不同的JPanel?這背後的動機是什麼?你知道你只能看到一個組件,而不是兩次。如果您希望同一個JTable出現多次,那麼您將需要創建多個JTable並讓它們共享相同的表格模型。 – 2012-03-07 18:12:57

+0

我對Java很陌生,仍然試圖弄清楚,但我想你是指'add(scrollPane)'這一行;'我認爲這是爲jtable滾動?然後,我初始化表類並將其表格組件添加到主jpanel。我哪裏錯了? – 2012-03-07 18:17:40

回答

1

擴展JFrame看起來很奇怪;您不使用任何頂級容器功能。下面是一個擴展JPanel的例子,帶有一個將面板放入JFrame的main()。

--Edited接受現有的JPanel

public class TablePanel 
{ 
    public static void addTableToPanel(JPanel jPanel, Vector rowData, Vector columnNames) 
    { 
    JTable jTable = new JTable(rowData, columnNames); 
    jTable.setFillsViewportHeight(true); 

    JScrollPane jScrollPane = new JScrollPane(jTable); 
    jScrollPane.setPreferredSize(new Dimension(300, 50)); 

    jPanel.add(jScrollPane); 
    } 

    public static void main(String[] args) throws Exception 
    { 
    SwingUtilities.invokeAndWait(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
     Vector cols = new Vector(); 
     Vector rows = new Vector(); 
     Vector row1 = new Vector(); 

     cols.add("A"); 
     cols.add("B"); 
     cols.add("C"); 
     row1.add("1"); 
     row1.add("2"); 
     row1.add("3"); 
     rows.add(row1); 
     rows.add(row1.clone()); 
     rows.add(row1.clone()); 
     rows.add(row1.clone()); 

     JFrame frame = new JFrame("TableTest"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel jPanel = new JPanel(); 
     jPanel.setLayout(new BorderLayout(0, 0)); 
     TablePanel.addTableToPanel(jPanel, rows, cols); 

     frame.getContentPane().add(jPanel); 
     frame.pack(); 
     frame.setVisible(true); 
     } 
    }); 
    } 
} 
+0

如何將您創建的表添加到現有的Jpanel。讓我們假設有這一行mainPanel = new javax.swing.JPanel(); 。你想添加你的表,到mainPanel,你怎麼做? (因爲這是我有的問題,它沒有被顯示)。您的示例在新窗口中顯示錶格 – 2012-03-07 18:59:52

+0

我編輯了代碼以接受現有的JPanel,而不是將其擴展。如果您使用的是現有的JPanel,我建議您注意它的佈局。如果你沒有看到你的桌子或者它以一種奇怪的方式出現,這可能是一個佈局問題。 – 2012-03-07 19:28:26