如何使用Java Swing布局整齐地缩进某些组件

时间:2011-01-08 19:00:14

标签: java swing layout swt grid-layout

使用Swing,在复选框或单选按钮下面缩进某些组件的最佳方法是什么?我需要以Firefox 3.6的Options-> Privacy对话框的方式制作一些东西,其中一些复选框在“main”复选框下缩进。我可以使用任何标准的AWT / Swing布局,包括GroupLayout。我也有JGoodies FormLayout可供我使用。我首先尝试在FormLayout中使用setLeadingColumn偏移量,但似乎除非我在分隔符下进行缩进,否则它将无法正常工作。也许我只是做错了?

是否有类似SWT GridLayout的horizo​​ntalIndent设置?那将是完美的。

我正在使用JDK1.6.0_23。

4 个答案:

答案 0 :(得分:3)

为子组件创建JPanel。然后,您可以使用所需的缩进将EmptyBorder添加到面板。

答案 1 :(得分:3)

有几种方法可以做到这一点:

  1. 将每个组件边框设置为:new EmptyBorder (0, 10, 0, 0)

  2. 使用GridBagLayout并使用Inset (0, 10, 0, 0)填充左侧。

  3. 使用GridBagLayout并使主复选框跨越两列,而子复选框则通过将它们放在最右边的列中来抵消。

  4. 提供自定义复选框图标,左侧边缘添加了一些空白区域。

  5. 我的建议是学习GridBagLayout - 它使用起来有点笨拙,但它确实为你提供了你想要的所有布局能力。当您需要特定的自动列大小调整行为时,JGoodies内容非常有用,如果您没有其他代码,GBL将无法为您提供这些行为。

答案 2 :(得分:0)

您应该可以使用FormLayout完成此操作,只需为子项添加另一列,并使主项目跨越2列。

答案 3 :(得分:0)

另一种选择是使用SpringLayout并添加填充。