2012-12-16 70 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。 –