BoxLayout内部JPannels对齐 - 如何将它们设置为左?

时间:2017-06-05 13:21:01

标签: java swing layout alignment gridbaglayout

我一直在与BoxLayout挣扎。我有一个包含3个内部面板的JPanel。外部面板设置为BoxLayout,垂直轴,第一个和第二个内部面板设置为GridBagLayout,最后一个设置为flowLayout(左)。

结果是第一个和第二个内部容器与中心对齐(我猜这是由GBL的默认行为引起而不设置weightx)。我怎样才能将它们对齐到左边?

我是否正确理解锚点在单元格内部工作但不对齐整个网格?而且,weightx会在细胞间分配空间,但不会将整个容器移到左边?如果这是真的,我应该使用另一个组件作为包装器,还是有另一种方式?

panAdv1 = new JPanel();
add(panAdv1);
panAdv1.setLayout(new BoxLayout(panAdv1, BoxLayout.PAGE_AXIS));

// PANEL 1 //
panel1 = new JPanel();
panAdv1.add(panel1);
panel1.setLayout(new GridBagLayout());

...

// PANEL 2 //

panel2 = new JPanel();
panAdv1.add(panel2);
panel2.setLayout(new GridBagLayout());

...

//PANEL 5 - buttons //
panel5 = new JPanel();
panAdv1.add(panel5);
panel5.setLayout(new FlowLayout(FlowLayout.LEFT));

1 个答案:

答案 0 :(得分:1)

阅读Fixing Alignment Problems上的Swing教程中的部分。 BoxLayout尊重"对齐"组件的属性。

  

如何将它们对齐到左边?

JPanel的默认设置是让面板中心对齐,因此您需要更改左对齐的对齐方式。