2012-01-17 101 views
4

我想減小組件之間的大小,在格式組(圖像的左側)。這個怎麼做?如何減少3個擺動複選框之間的空間?

enter image description here

JPanel formattingGroup = createGroupWithName("Formatting"); 
     formattingGroup.setMinimumSize(new Dimension(250, 20)); 
     formattingGroup.setLayout(new GridLayout(5, 0)); 
     add(formattingGroup); 

     final JCheckBox showSurface = new JCheckBox("Show surface"); 
     showSurface.setSelected(true); 
     formattingGroup.add(showSurface); 

     final JCheckBox showTerrain = new JCheckBox("Show terrain"); 
     showTerrain.setSelected(true); 
     formattingGroup.add(showTerrain); 

     final JCheckBox showVehicleStatus = new JCheckBox("Show vehicle status"); 
     showVehicleStatus.setSelected(true); 
     formattingGroup.add(showVehicleStatus); 

     JPanel pnl = createGroupWithName("Depth Stretch"); 
     formattingGroup.add(pnl); 
     JSlider slider = new JSlider(0, 10); 
     pnl.add(slider); 

回答

3

當使用GridLayout的所有部件由相同的大小。

您正在向網格中添加帶有TitledBorder和JSlider的JPanel。因此,複選框將採用與該面板相同的垂直高度。

您需要爲面板使用不同的佈局管理器。也許是一個垂直的BoxLayout。

2

你可能會看看可用尺寸的變種,在Resizing a Component討論。

+0

最誠實的問題:Isnt是否只能在[Nimbus外觀](http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/custom.html)中使用組件的大小調整選項? '「Nimbus是目前唯一支持尺寸變體的Sun外觀」' – hamena314 2016-01-25 13:00:43

+1

它是唯一支持尺寸變體的_Sun_(現在是Oracle)L&F; 'com.apple.laf.AquaLookAndFeel'也可以用於[示例](http://stackoverflow.com/a/17392522/230513)。 – trashgod 2016-01-25 14:52:45

0

使用gridbaglayout,因爲這給你機會給予權重,列或行,並設置間距和填充值。

我做了一個Swing應用程序,其中包含12個框架,它們都是用GridBagLayout製作的。

我之前也嘗試過其他,但他們都有限制。這就是GridBagLayout的起點。開始瞭解它的工作原理有點困難,但一旦感受到它,將組件放在想要的位置真的是最好的選擇。

如果你想我會給你一個用GridBagLayout創建的框架的很酷的例子。

相關問題