2013-03-14 25 views
2

我beeginer在MigLayout所以,我需要補充的倍數JTable中的一個的JPanel,但是當我嘗試添加多個表,似乎剛剛過去的表,和其他人只是標JScrollPane邊界。我的代碼在下面。多JTable中使用Miglayout

Test() { 
    //Panels 
    JPanel globalPanel = new JPanel(new MigLayout("fillx","[]","[]50[]")); 
    JPanel topPanel = new JPanel (new MigLayout("fillx","40px[]15[grow]","40px[]")); 
    JPanel tablePanel = new JPanel (new MigLayout("fillx","[center]","[]")); 
    //Components 
    JComboBox boxProj; 
    JTable table; 
    JScrollPane scroll; 


    //Top Panel   
    topPanel.add(new JLabel("Project Name:")); 
    String listString[] = {"test"}; 
    boxProj= new JComboBox(listString); 
    topPanel.add(boxProj); 

    //Table Panel 
    //Tables 
    table = new JTable(); 
    createTable(table); //my table 

    //Adding Multiples Tables 
    tablePanel.add(new JScrollPane(table),"growx,wrap,hmax 300"); 
    tablePanel.add(new JScrollPane(table),"growx,wrap,hmax 300"); 

    //Scroll to TablePanel 
    scroll = new JScrollPane(tablePanel); 
    scroll.setBorder(BorderFactory.createTitledBorder(null, "Project", TitledBorder.LEFT, TitledBorder.TOP, new Font("null", Font.BOLD, 12), Color.BLACK)); 
    scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

    //Global Panel 
    globalPanel.add(topPanel, "dock north"); 
    JSeparator separator = new JSeparator(); 
    globalPanel.add(separator,"growx"); 
    globalPanel.add(scroll,"dock south, growx"); 

    getContentPane().add(globalPanel); 
    pack(); 
    setSize(1024,768); 
} 

如果我犯了一些錯誤,請糾正我。

謝謝!

+0

不要忘了[接受一個答案(http://meta.stackexchange.com/a/65088/155831)。它有助於未來的讀者:) – Reimeus 2013-03-14 14:44:43

+0

我仍然沒有狀態,以驗證答案。 「投票最多需要15聲譽」,我只有11 – Andriel 2013-03-14 14:49:39

+0

+1來提高你的代表有點:) – Reimeus 2013-03-14 14:53:13

回答

2

任何Swing組件只能有一個父。在這裏,您要添加相同JTable 2個不同的JScrollPane容器。結果是隻顯示最後一個。要顯示2個JTable組件,您必須創建2個獨立的組件。

table2 = new JTable(); 
... 
tablePanel.add(new JScrollPane(table2), "growx,wrap,hmax 300"); 
+0

不錯,這是工作,謝謝!但是,如果我需要** N ** JTables在我的JPanel中,我需要實例** N ** JTables?! – Andriel 2013-03-14 14:36:40

+0

是的,絕對...... – Reimeus 2013-03-14 14:38:23

2

這似乎是你試圖添加兩次相同的組件。您只能看到一個組件在一個容器:

表=新的JTable(); createTable(table); //我的表

//Adding Multiples Tables 
tablePanel.add(new JScrollPane(table),"growx,wrap,hmax 300"); 
tablePanel.add(new JScrollPane(table),"growx,wrap,hmax 300"); 

與嘗試:

JTable table1 = new JTable(); 
JTable table2 = new JTable(); 
createTable(table1); //my table 
createTable(table2); 

//Adding Multiples Tables 
tablePanel.add(new JScrollPane(table1),"growx,wrap,hmax 300"); 
tablePanel.add(new JScrollPane(table2),"growx,wrap,hmax 300");