为什么当我用另一个面板包裹一个面板时胶水会消失?
Why does glue disappear when I wrap a Panel with another one?
这是我尝试过的:
JPanel p1 = new JPanel();
BoxLayout b1 = new BoxLayout(p1, BoxLayout.X_AXIS);
p1.setLayout(b1);
p1.add(new JButton("1"));
p1.add(Box.createHorizontalGlue());
p1.add(new JButton("1"));
而且效果很好。按钮在左右两侧
但是,如果我将其包装到由 FlowLayout
管理的 JPanel
中,胶水就会消失。
//Flow Layout
JPanel jp = new JPanel();
//Box Layout
JPanel p1 = new JPanel();
BoxLayout b1 = new BoxLayout(p1, BoxLayout.X_AXIS);
p1.setLayout(b1);
p1.add(new JButton("1"));
p1.add(Box.createHorizontalGlue());
p1.add(new JButton("1"));
//put it into a JPanel with FlowLayout
jp.add(p1);
panel.add(jp);
为什么?我认为胶水就像任何其他组件一样,所以它不应该消失。这是它的样子:
没有人解释一下吗?请注意,如果我将它放入 JPanel
和 BoxLayout
就可以了。
Why? I thought the glue was just like any other componets, so it shouldn't dissapear
"glue" 的首选大小为 0。
Can't someone explain it?
A FlowLayout
以首选大小显示组件。因此,添加到其中的任何面板都将以面板的首选大小显示。
使用 BoxLayout
的面板的首选尺寸是添加到面板的组件的尺寸。由于胶水的首选尺寸为0,因此对面板的首选尺寸没有影响。
"glue" 只是为使用 BoxLayout
的面板添加了功能。也就是说,当面板尺寸(由父面板的布局管理器确定)大于首选尺寸时,BoxLayout
会将额外的 space 分配给胶水。
因此,根据父面板的布局管理器,"glue" 会或不会影响布局。
这是我尝试过的:
JPanel p1 = new JPanel();
BoxLayout b1 = new BoxLayout(p1, BoxLayout.X_AXIS);
p1.setLayout(b1);
p1.add(new JButton("1"));
p1.add(Box.createHorizontalGlue());
p1.add(new JButton("1"));
而且效果很好。按钮在左右两侧
但是,如果我将其包装到由 FlowLayout
管理的 JPanel
中,胶水就会消失。
//Flow Layout
JPanel jp = new JPanel();
//Box Layout
JPanel p1 = new JPanel();
BoxLayout b1 = new BoxLayout(p1, BoxLayout.X_AXIS);
p1.setLayout(b1);
p1.add(new JButton("1"));
p1.add(Box.createHorizontalGlue());
p1.add(new JButton("1"));
//put it into a JPanel with FlowLayout
jp.add(p1);
panel.add(jp);
为什么?我认为胶水就像任何其他组件一样,所以它不应该消失。这是它的样子:
没有人解释一下吗?请注意,如果我将它放入 JPanel
和 BoxLayout
就可以了。
Why? I thought the glue was just like any other componets, so it shouldn't dissapear
"glue" 的首选大小为 0。
Can't someone explain it?
A FlowLayout
以首选大小显示组件。因此,添加到其中的任何面板都将以面板的首选大小显示。
使用 BoxLayout
的面板的首选尺寸是添加到面板的组件的尺寸。由于胶水的首选尺寸为0,因此对面板的首选尺寸没有影响。
"glue" 只是为使用 BoxLayout
的面板添加了功能。也就是说,当面板尺寸(由父面板的布局管理器确定)大于首选尺寸时,BoxLayout
会将额外的 space 分配给胶水。
因此,根据父面板的布局管理器,"glue" 会或不会影响布局。