繁体   English   中英

当我用另一个面板包裹面板时,为什么胶水会消失?

[英]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);

为什么? 我认为胶水就像任何其他组件一样,所以它不应该消失。 这是它的样子:

在此输入图像描述

不能有人解释一下吗? 请注意,如果我将它放入带有BoxLayoutJPanel ,那很好。

为什么? 我认为胶水就像任何其他组件一样,所以它不应该消失

“胶水”的首选大小为0。

不能有人解释一下吗?

FlowLayout以其首选大小显示组件。 因此添加到其中的任何面板都将显示在面板首选大小。

使用BoxLayout的面板的首选大小是添加到面板的组件的大小。 由于胶的优选尺寸为0,因此它对面板的优选尺寸没有影响。

“胶水”只是使用BoxLayout为面板增加了功能。 也就是说,当面板大小(由父面板的布局管理器确定)大于首选大小时, BoxLayout将为胶水提供额外的空间。

因此,根据父面板的布局管理器,“胶水”将会或不会影响布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM