JRadioButton边框/填充/内嵌/边距...无论你怎么称呼它

时间:2009-08-14 21:42:35

标签: java swing radio-button jradiobutton

在我的Java应用程序中,我试图创建一个非常简单的表单,在表单的每一行上都有一个标签和一组控件。想象一下这个粗略的ASCII图:

   Result 1: (*) pass  ( ) fail
   Result 2: ( ) pass  (*) fail
Error Count: [10______]
Explanation: [Operator overload___]

令人讨厌JRadioButton s与其他控件没有排列,因为它们周围有大量的填充,将它们向右推几个像素并在行之间添加大量空间。我最终得到这样的东西:

   Result 1:   (*) pass  ( ) fail

   Result 2:   ( ) pass  (*) fail

Error Count: [10______]
Explanation: [Operator overload___]

如何让单选按钮停止拥有如此多的空白空间,以便与其他所有内容完美排列?如果重要,那就是使用GTK L& F;我没有尝试在Windows下运行该程序。

3 个答案:

答案 0 :(得分:2)

看起来有两个罪魁祸首:

  1. 包含两个单选按钮的迷你版JPanelFlowLayout,默认情况下在每个组件周围添加5个像素的填充。

  2. 执行radioButton.setBorder(null)可以消除按钮周围另一个像素的空间。但是,当它们有焦点时,它还会拧紧围绕它们绘制的虚线。

答案 1 :(得分:0)

使用GridBagLayout,并确保根据需要向左或向右锚定单元格(每个标签和复选框都有自己的单元格)。标签是右对齐的,复选框是左对齐的。

由于手动定制GridBagLayouts很麻烦,我建议使用NetBeans GUI构建器并使用其图形化的“自定义”工具进行调整。

答案 2 :(得分:0)

另一个解决方案是改变边距(radionbuttons的setMargin方法)。这应该做的工作。唯一的缺点是不同的LAF的利润/插入不同。