2013-01-07 82 views
1

我有兩個面板,並希望他們在我的JFrame中顯示,但是當我嘗試這樣,我只能看到第二個。有人可以幫幫我嗎? :(兩個面板在一個JFrame中?

import javax.swing.JFrame; 

public class MainWindow { 

CardLayout layout; 
JFrame frame; 
Player panel1; 
Block panel2; 

public MainWindow() { 
    frame = new JFrame("Rechteck"); 
    panel1 = new Player(); 
    panel2 = new Block(); 
    panel1.addKeyListener(new KeyListen(panel1)); 
    frame.add(panel1); 
    frame.add(panel2); 
    frame.setSize(500,500); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
}} 
+1

另請參閱[*初始線程*](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)。 – trashgod

回答

1

創建一個JPanel添加到JFrame。添加PANEL1和是Panel2新面板。JFrame中只能有一個孩子,通常是通過調用JFrame.setContentPane()設置。

+2

'JFrame'是一個容器,從技術上講,它可以有任何數量的孩子(事實上它的確如此)。 「JFrame」的實現將調用重定向到「add」和「remove」(以及其他容器管理方法)到內容窗格。您可以簡單地將佈局管理器改爲類似'GridLayout'的東西。沒有必要第三個窗格 - 恕我直言 – MadProgrammer

4

你有加入你的兩個面板的你JFrame —的BorderLayout.CENTER唯一一個能夠佔據那個位置,。這將是在這種情況下,最後一個加入,panel2

爲了使面板佔用的空間均勻,你可以使用GridLayout

frame.setLayout(new GridLayout(2, 1)); 

旁白:更好登記的關鍵事件在Swing組件時使用Key Bindings

+0

謝謝。但仍然存在一個問題:每個面板有兩部分框架 –

+0

上述佈局將佈置2個面板。你有更多?你是否也在使用CardLayout? 2個面板內的佈局是什麼? – Reimeus