2012-01-17 88 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创建的框架的很酷的例子。

相关问题