我一直在与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));
答案 0 :(得分:1)
阅读Fixing Alignment Problems上的Swing教程中的部分。 BoxLayout尊重"对齐"组件的属性。
如何将它们对齐到左边?
JPanel的默认设置是让面板中心对齐,因此您需要更改左对齐的对齐方式。