我尝试使用
将子面板的位置设置在父面板的中心parent_panel.setLayout(new BorderLayout());
parent_panel.add(child_panel, BorderLayout.CENTER);
但它会在水平屏幕的中间添加,但在顶部垂直添加。
如何将其垂直和水平地添加到屏幕中心,我需要做什么?
答案 0 :(得分:8)
如果我理解正确,你需要一个类似这样的界面:
+-------- Parent panel --------+ | | | | | +--- Child panel ----+ | | | | | | | | | | | | | | | | | | +--------------------+ | | | | | +------------------------------+
...并且您没有将其他组件添加到父面板。
如果是这种情况,您有两个我知道的选择(基于this question,我显然已回答):
将GridBagLayout
与空GridBagConstraints
对象一起使用,如下所示:
parent_panel.setLayout(new GridBagLayout());
parent_panel.add(child_panel, new GridBagConstraints());
使用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());