gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:08:00 28 4
gpt4 key购买 nike

这是我尝试过的:

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"));

而且效果很好。按钮在左右两侧

enter image description here

但如果我将它包装到由 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);

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

enter image description here

没有人解释一下吗?请注意,如果我将它放入带有 BoxLayoutJPanel 中,就可以了。

最佳答案

Why? I thought the glue was just like any other componets, so it shouldn't dissapear

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

Can't someone explain it?

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

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

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

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

关于java - 为什么当我用另一个面板包裹一个面板时胶水会消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com