簡體   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