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

时间:2010-03-09 17:44:54

标签: java swing layout

我尝试使用

将子面板的位置设置在父面板的中心
parent_panel.setLayout(new BorderLayout());
parent_panel.add(child_panel, BorderLayout.CENTER);

但它会在水平屏幕的中间添加,但在顶部垂直添加。

如何将其垂直和水平地添加到屏幕中心,我需要做什么?

1 个答案:

答案 0 :(得分:8)

如果我理解正确,你需要一个类似这样的界面:

+-------- Parent panel --------+
|                              |
|                              |
|    +--- Child panel ----+    |
|    |                    |    |
|    |                    |    |
|    |                    |    |
|    |                    |    |
|    +--------------------+    |
|                              |
|                              |
+------------------------------+

...并且您没有将其他组件添加到父面板。

如果是这种情况,您有两个我知道的选择(基于this question,我显然已回答):

  1. GridBagLayout与空GridBagConstraints对象一起使用,如下所示:

    parent_panel.setLayout(new GridBagLayout());
    parent_panel.add(child_panel, new GridBagConstraints());
    
  2. 使用BoxLayout,如下所示:

    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());