JPanel填充整个JFrame

时间:2012-12-16 09:16:43

标签: java swing jframe jpanel

我正在编写一个简单的游戏,我正在使用一个包含网格和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 x 680 在此我正在绘制一个480 x 480区域的网格 在此我希望JPanel位于500,50,尺寸为400,100 但是,当我运行此代码时,一旦用户确认OK,JPanel就会填满整个JFrame。
如何在整个应用程序的使用寿命期间将面板保持在其位置并保持尺寸一致? 任何帮助都非常感谢,并提前感谢。

1 个答案:

答案 0 :(得分:4)

  

在此我正在绘制一个480 x 480区域的网格。

  • 覆盖PreferredSize for JPanel

  • 然后拨打JFrame.pack()JFrame.setVisible(true)作为最后一行代码

  • 必须阅读InitialThread

  • 如果只有一个JPanelJPanel filling entire JFrame),则使用built_in BorderLayout in JFrame f.e. myFrame.add(infoPanel, BorderLayout.CENTER)不是FlowLayout

  • 不要扩展JFrame创建此Object作为本地变量