【问题标题】:JRadioButton border/padding/insets/margin... whatever you call itJRadioButton 边框/填充/插图/边距...随便你怎么称呼它
【发布时间】:2023-03-27 23:22:01
【问题描述】:

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

结果 1: (*) 通过 ( ) 失败 结果 2: ( ) 通过 (*) 失败 错误计数:[10______] 解释:[运算符重载___]

令人讨厌的是,JRadioButtons 并没有与其他控件对齐,因为它们周围有大量的填充,将它们向右推了几个像素并在行之间增加了很多空间。我最终得到了这样的结果:

结果 1: (*) 通过 ( ) 失败 结果 2: ( ) 通过 (*) 失败 错误计数:[10______] 解释:[运算符重载___]

我怎样才能让单选按钮不再有这么多的空白空间,以便它们可以与其他所有东西很好地对齐?如果重要的话,这就是使用 GTK L&F;我还没试过在Windows下运行程序。

【问题讨论】:

    标签: java swing radio-button jradiobutton


    【解决方案1】:

    看起来有两个罪魁祸首:

    1. 包含两个单选按钮的 mini-JPanel 有一个 FlowLayout,它默认在每个组件周围添加 5 个像素的填充。

    2. 执行radioButton.setBorder(null) 会消除按钮周围另一个像素的空间。但是,当它们获得焦点时,它也会破坏围绕它们绘制的虚线。

    【讨论】:

    • flowlayout 除了按钮列表(典型的“取消”“接受”种类)之外的任何东西都通常很差
    • 这对按钮不好,因为它给了它们可变的大小——看起来很不整洁;网格布局更适合按钮。流式布局几乎没用。
    • 你是对的——在我的平台上的 FlowLayout 中,Accept 与 Cancel 按钮之间存在 1px 的差异。另一方面,它可以很好地居中和间隔,这是典型的网格布局所没有的。
    【解决方案2】:

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

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

    【讨论】:

    • 不好的建议;在 GridBag 可能是唯一其他选择的情况下,使用基于表格的布局。网上有很多不错的基于表格的布局是免费的。
    • GridBag 基于表格的,发帖人显然在寻找类似表格的东西。是的,其他的可能更容易使用,但是这个包含在 JDK 中,可以对结果进行很大程度的控制。
    【解决方案3】:

    另一种解决方案是更改边距(radionbuttons 的 setMargin 方法)。这应该可以完成这项工作。唯一的缺点是不同 LAF 的边距/插图会有所不同。

    【讨论】:

      猜你喜欢
      • 2016-05-02
      • 1970-01-01
      • 2017-06-21
      • 2011-04-17
      • 1970-01-01
      • 2012-11-07
      • 2016-04-09
      • 1970-01-01
      • 2012-04-02
      相关资源
      最近更新 更多