2012-02-16 75 views
3

我是Java Swing的新手。我正在嘗試製作一個包含三個按鈕的框架;一個在中心,另一個在頂部,最後一個在右邊。我想讓NORTH和EAST邊框的寬度相同。但現在,東邊界比北邊界寬。Java Swing:在BorderLayout上更改邊框寬度/高度

我想知道在BorderLayout中是否有改變WEST/EAST邊界寬度或NORTH/SOUTH邊界高度的方法。

+0

*「的東部邊界比北方邊疆寬」 * AFAIU,這是不可能的。發佈一個[SSCCE](http://sscce.org/)即可。 – 2012-02-16 18:21:38

回答

1

據我所知,你不能直接設置邊界區域的高度/寬度。 您只能指定放置在這些區域內的組件的大小。

但是,如前所述,您可以指定區域之間的差距。

GridBagLayout更靈活,但也更復雜。

建築平面佈置在Swing並不總是那麼容易 - 也許用MigLayout(第三方庫)將簡化你的東西:http://www.miglayout.com/

1

您已經使用BorderLayout的假設,您可以使用面板來控制佈局的框架並創建邊框感覺。然後,您可以使用setPreferredSize(new Dimension(int,int))來請求首選大小,其中(int,int)分別是寬度和高度。那麼對於邊界的代碼會是這個樣子:

JPanel jLeft = new JPanel(); 
JPanel jRight = new JPanel(); 
JPanel jTop = new JPanel(); 
JPanel jBottom = new JPanel(); 

add(jLeft, "West"); 
jLeft.setPreferredSize(new Dimension(40, 480)); 

add(jRight, "East"); 
jRight.setPreferredSize(new Dimension(40, 480)); 

add(jTop, "North"); 
jTop.setPreferredSize(new Dimension(640, 40)); 

add(jBottom, "South"); 
jBottom.setPreferredSize(new Dimension(640, 40)); 

上面的例子要求所有邊框具有相同的厚度,由於東部和西部邊框的寬度北部和南部邊界的高度匹配。這將是一個大小的幀(640,480)。然後,您可以使用這樣的添加按鈕框架:

JButton button = new JButton(); 
jTop.add(button); 
button.setPreferredSize(new Dimension(60, 20)); 

您可以找到了setPreferredSize使用這裏的另一個很好的例子:https://stackoverflow.com/a/17027872