2009-08-14 41 views
4

在我的Java应用程序,我想创建一个非常简单的形式与标签和表格的每一行一组控件。试想一下,这样的原油ASCII图:一个JRadioButton边框/填充/插图/保证金......无论你怎么称呼它

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

烦人的JRadioButton■不要与对照的其余部分他们都围绕着大量的填充排队,他们推到右边一个像素夫妇并在两行之间添加大量空间。我最终是这样的:

 
    Result 1: (*) pass () fail 

    Result 2: () pass (*) fail 

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

我怎样才能获得单选按钮来停止有这么多的空的空间,使他们能够与其他一切很好地排队?如果这很重要,那就是使用GTK L&F;我还没有尝试在Windows下运行该程序。

回答

2

它看起来像有两个元凶:

  1. 的微型JPanel含有两个单选按钮具有FlowLayout默认为围绕增加每个组件的填充5个像素。

  2. radioButton.setBorder(null)消除的按钮周围空间的另一像素的价值。尽管如此,它们还会在他们聚焦时在他们周围画出虚线。

+0

的FlowLayout普遍较差的任何东西,但按键的列表(典型“取消”,“接受”品种) – tucuxi 2009-08-14 22:20:52

+0

而且它的按钮没有好,因为它给了他们可变大小 - 很乱找;网格布局更适合按钮。流布局几乎没用。 – 2009-08-15 04:59:42

+0

你是对的 - 有接受VS取消按钮之间在我的FlowLayout平台上1px的差别。另一方面,它很好地集中和分隔了一些东西,这是你典型的网格布局所不具备的。 – tucuxi 2009-08-18 23:45:26

0

使用的GridBagLayout,并确保锚细胞(每个标签和复选框,会有它自己的小区)向左或向需要的权利。标签是右对齐的,复选框是左对齐的。

由于手动自定义GridBagLayouts是一件麻烦事,我建议使用NetBeans GUI Builder和使用其图形化的“定制”的工具加以调整。

+0

不好的建议; GridBag可能是唯一的另一种选择,使用基于表格的布局。网上有许多免费的基于表格的优秀布局。 – 2009-08-15 05:00:45

+0

GridBag *是基于表的,并且海报显然是寻找类似桌面的东西。是的,其他人可能更容易使用,但是这一个是包含在JDK,并允许对结果的控制上一个大台阶。 – tucuxi 2009-08-18 23:36:57

0

另一种解决方案可以是更改余量(radionbuttons的setMargin方法)。这应该完成这项工作。唯一的缺点是对于不同的LAF,边界/插入将会不同。