2012-04-20 100 views
0

好吧,現在我有一個包含JLayeredPane的JFrame。所以現在就運行一個遊戲GUI。我想將按鈕添加到此框的一側,以便我可以通過按鈕接受用戶的輸入。 任何想法?將多個JPanel添加到JFrame中

class mapGUI extends JFrame{ 
     layeredPane = new JLayeredPane(); 
    mapSize = new Dimension(mapColumn * 16 , mapRow * 16); 

    layeredPane.setPreferredSize(mapSize); 
    //Adding the layeredPane to the frame. 
    getContentPane().add(layeredPane); 

    //Adds the appropriate labels to the panels and adds them to the layeredPane. 
    addPlayerPos(); 
    addDungeonItems(); 
    addDungeonFloor(); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setResizable(false); 
    pack(); 
    setLocationRelativeTo(null); 
    setVisible(true); 
} 

這是我創建JFrame並向其中添加JLayeredPane的代碼的一部分。

+2

對不起,沒有張貼[SSCCE](http://sscce.org/)的想法顯示您的問題(S) – mKorbel 2012-04-20 12:15:28

+0

現在是更好嗎? – saviok 2012-04-20 12:21:37

+0

你想在哪裏添加按鈕,你打算如何使用它們? – 2012-04-20 12:24:17

回答

1

如果您想在遊戲中使用按鈕,您可以使用BorderLayout並將按鈕放在佈局的東/西部,並將LayeredPane添加到中心。如果按鈕需要與遊戲屏幕重疊,您可以使用layeredPaneObj.add(buttonPanel,new Integer(0)),這將使面板保持最高。

+0

@JakubZaverka請閱讀問題。 「_add按鈕到框架的一側_」不是框架的頂部**。 – 2012-04-20 12:27:57

+0

對不起,一般的困惑...... – 2012-04-20 12:36:33

1

你應該首先學習關於layout managers的基本知識。 正如前面提到的,有在BorderLayout的一個特殊的外觀爲您的要求

4

1)不使用JLayeredPane,因爲有限制,高達6層,使用JLayer (Java7)基於JXLayer(的Java6)

2)使用JLayeredPane約爲setSize/setBounds,即不爲resiziable Container

3)使用CardLayout代替JLayeredPane舒適,

4)或使用JTabbedPane

+0

[JLayer](http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.html)的+1。如果我錯了,請糾正我。 CardLayout無法一次顯示多張卡片,因此對於使用多個圖層的遊戲來說,它不會有好處。 – 2012-04-20 12:40:35

+0

@Nitin Chhajer正確的,你是對的,也許我錯了(我只用於UIManagers黑客JLayeredPane),但我認爲很難使用JLayeredPane的遊戲,(糾正我的任何人關於渲染isses)這就是爲什麼JLayer在那裏... – mKorbel 2012-04-20 12:47:08