2012-12-16 76 views
1

我正在寫一個簡單的遊戲,我正在使用包含網格和JPanel的JFrame。
這裏是我的僞代碼:
JPanel填充整個JFrame

void MyJframeConstructor() 
{ 
    // some basic bootstrap logic 
    // calling repaint to draw grid 
    repaint(); 

    // Grid is drawn fine. 
    // Showing user a confirm dialog box on which I add below JPanel. 

    if(confirmed) 
    { 
    // GameInfoPanel extends JPanel. 
    infoPanel = new GameInfoPanel(new FlowLayout(FlowLayout.LEFT)); 
    infoPanel.setPreferredSize(new Dimension(400, 100)); 
    infoPanel.setLocation(500, 50); 
    this.add(infoPanel); 
    infoPanel.validate();  
    } 
} 

我的問題,這裏是我的JFrame或窗口480 * 680
在此,我在480×480的區域中繪製一個網格。
下面我想JPanel位於500,50維400,012。
然而,當我運行這個代碼時,一旦用戶確認OK,JPanel填充整個JFrame。
我應該如何在整個應用程序的整個生命週期內保持面板的位置和尺寸一致?
任何幫助是高度讚賞和提前感謝。

+1

什麼是父容器(該'JFrame')的佈局?你可以發佈SSCE嗎? http://sscce.org/ – The111

回答

4

在此我正在繪製480 x 480的網格區域。

  • 覆蓋PreferredSize for JPanel

  • 然後調用JFrame.pack()JFrame.setVisible(true)作爲最後的代碼行

  • 已經閱讀InitialThread

  • 如果是隻有一種JPanelJPanel filling entire JFrame)再到使用built_in BorderLayout in JFrame fe myFrame.add(infoPanel, BorderLayout.CENTER)不FlowLayout中

  • 不延長JFrame創建這個Object爲局部變量

+0

這樣做會導致我的JFrame與我的面板變成完全相同的大小,即400,100 :( –

+1

沒有人可以看到你的代碼,沒有任何想法,發佈[SSCCE](http:// sFce.org/),簡短,可運行,可編譯,當然可以基於我的答案鏈接的代碼,JFrame有邊框和工具欄來自本機操作系統 – mKorbel

+0

抱歉沒有發佈SSCE。雖然myFrame.add(infoPanel,BorderLayout.SOUTH )做了詭計,謝謝@mKorbel。 –