2012-03-07 110 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