簡體   English   中英

gridheight似乎不起作用

[英]gridheight doesn't seem to work

我正在嘗試使用GridBagLayout,但是我遇到了一些麻煩。 我想使用12行進行布局。 因此,首先,我使兩個JPanels填充了前兩行(gridheight = 1)。 然后,我制作另外5個JPanels來填充其他10行(gridheight = 2)。 底部的5個JPanel獲得gridheight = {2,4,6,8,10},因此它們不會重疊或其他任何東西。 我現在遇到的問題是:
所有的JPanel都具有相同的大小!

我還填寫了兩種方式,並且不使用任何錨點。 如果我添加一個帶有gridx = 1,gridy = 0和gridheight = 2的JPanel,那么它將具有兩倍的高度,那么這有什么用呢? 我是否必須事先告知布局系統我將要使用的總行數? 如果是這樣,我該怎么做?

GridBagLayout(GBL)在很多方面都被初次使用的用戶所忽略。

1)放置在GBL內的組件將以其“首選”大小進行初始化。 iirc的JPanel的首選大小為1x1。

2)如果要根據封閉容器調整GBL單元的大小,則需要給它們一個weightx和weighty。 這兩個屬性的作用是,根據分配的所有權重和權重之比,為單元提供可用面積的百分比。 例如,如果我有2個像元,而1個像元的權重= 1.0,第二個像元的權重是2.0,那么第一個像元的寬度將是第二個像元的1/2(或者第二個像元的寬度是第二個像元的兩倍)。

3)首次潛水時,GBL會經歷很多試驗和錯誤,但它是最強大,最靈活和最可靠的布局(尤其是與嵌套布局相比,更容易出錯)

因此,對於前兩行,我說:

 c.fill = GridBagConstraints.HORIZONTAL;
 c.gridwidth = 1;
 c.gridheight = 1;
 c.ipadx = 100;
 c.ipady = h / (2 * columns + 2);
 c.weightx = 1.0;
 c.weighty = 1.0;

對於接下來的行,我只更改c.ipady:

 c.ipady = h / (columns + 1);

因此,這基本上解決了我的問題,但我仍然認為這可能容易得多。

PS變量h是我屏幕的最高點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM