Java 使用布局在屏幕中心设置面板

Java 使用布局在屏幕中心设置面板,java,swing,layout,Java,Swing,Layout,我尝试通过使用将子面板的位置设置在父面板的中心 parent_panel.setLayout(new BorderLayout()); parent_panel.add(child_panel, BorderLayout.CENTER); 但它被添加在水平屏幕的中间,但在顶部垂直 我需要怎么做才能将它垂直和水平地添加到屏幕中心 如果我理解正确,您需要这样的界面: +-------- Parent panel --------+ | |

我尝试通过使用将子面板的位置设置在父面板的中心

parent_panel.setLayout(new BorderLayout());
parent_panel.add(child_panel, BorderLayout.CENTER);
但它被添加在水平屏幕的中间,但在顶部垂直


我需要怎么做才能将它垂直和水平地添加到屏幕中心

如果我理解正确,您需要这样的界面:

+-------- Parent panel --------+ | | | | | +--- Child panel ----+ | | | | | | | | | | | | | | | | | | +--------------------+ | | | | | +------------------------------+
parent_panel.setLayout(new GridBagLayout());
parent_panel.add(child_panel, new GridBagConstraints());
parent_panel.setLayout(new BoxLayout(parent_panel, BoxLayout.PAGE_AXIS));
Box horizontalBox = Box.createHorizontalBox(); 
horizontalBox.add(Box.createHorizontalGlue()); 
horizontalBox.add(child_panel); 
horizontalBox.add(Box.createHorizontalGlue()); 
Box verticalBox = Box.createVerticalBox(); 
verticalBox.add(Box.createVerticalGlue()); 
verticalBox.add(horizontalBox); // one inside the other
verticalBox.add(Box.createVerticalGlue()); 
  • 使用
    BoxLayout
    ,如下所示:

    +-------- Parent panel --------+ | | | | | +--- Child panel ----+ | | | | | | | | | | | | | | | | | | +--------------------+ | | | | | +------------------------------+
    parent_panel.setLayout(new GridBagLayout());
    parent_panel.add(child_panel, new GridBagConstraints());
    
    parent_panel.setLayout(new BoxLayout(parent_panel, BoxLayout.PAGE_AXIS));
    Box horizontalBox = Box.createHorizontalBox(); 
    horizontalBox.add(Box.createHorizontalGlue()); 
    horizontalBox.add(child_panel); 
    horizontalBox.add(Box.createHorizontalGlue()); 
    Box verticalBox = Box.createVerticalBox(); 
    verticalBox.add(Box.createVerticalGlue()); 
    verticalBox.add(horizontalBox); // one inside the other
    verticalBox.add(Box.createVerticalGlue()); 
    

  • 你能提供更多的代码吗。这两行看起来不错,但如果能看到您所做的一切,那就太好了。parent_panel是否还有其他子项?您是否覆盖了childPanel的大小?我没有向主面板添加任何其他子面板,但我正在向上述子面板添加其他面板。关于代码,我认为只有两行代码与主面板中子面板的布局定位有关。是否希望顶部有填充?如果您有一个边框布局,并将某个对象设置为中心,这只意味着它将填充所有未被北、南、东或西对象占用的空间。@mmyers我不希望顶部有任何内容,只希望该空间为空白。