Java JPanel填充整个JFrame

Java JPanel填充整个JFrame,java,swing,jframe,jpanel,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.

我正在编写一个简单的游戏,我正在使用一个包含网格和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。
如何在应用程序的整个生命周期内保持面板的位置和大小一致?
任何帮助都将受到高度赞赏并提前表示感谢

在此范围内,我绘制了一个480 x 480区域的网格

  • 凌驾

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

  • 必须阅读

  • 如果只有一个
    JPanel
    JPanel填充整个JFrame
    ),则使用f.e.
    myFrame.add(infoPanel,BorderLayout.CENTER)
    非FlowLayout

  • 不要扩展
    JFrame
    将此
    对象创建为局部变量

在此范围内,我绘制了一个480 x 480区域的网格

  • 凌驾

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

  • 必须阅读

  • 如果只有一个
    JPanel
    JPanel填充整个JFrame
    ),则使用f.e.
    myFrame.add(infoPanel,BorderLayout.CENTER)
    非FlowLayout

  • 不要扩展
    JFrame
    将此
    对象创建为局部变量


父容器(JFrame)的布局是什么?你能发个短信吗?父容器(JFrame
)的布局是什么?你能发个短信吗?这样做会导致我的JFrame变得与我的面板大小完全相同,即400、100:(没有人能看到你的代码,没有想法,发布一个简短、可运行、可编译的,当然可以基于我的答案中链接的代码,JFrame有边框&工具栏来自原生OSsorry,因为它没有发布SSCE。尽管myFrame.add(infoPanel,BorderLayout.SOUTH)成功了。谢谢@mKorbel。这样做会使我的JFrame与我的面板大小完全相同,即400100:(没有人能看到你的代码,没有想法,发布一个简短的、可运行的、可编译的,当然可以基于我的答案中链接的代码,JFrame有边框&Toolbar来自原生OSsorry,因为它没有发布SSCE。虽然myFrame.add(infoPanel,BorderLayout.SOUTH)做到了这一点。谢谢@mKorbel。