【问题标题】:Swing GUI components too tighly packedSwing GUI 组件过于紧凑
【发布时间】:2010-12-09 09:24:29
【问题描述】:

在 Java Swing 应用程序中,我觉得所有组件都过于紧凑。

在 QT 中,可以为布局指定填充和边距。

swing 有类似的东西吗?

alt text http://img12.yfrog.com/img12/9612/screenshotscreenerconfi.png

这是我的应用程序的屏幕截图,我的东西太紧了(是吗?你觉得呢?

谢谢。

【问题讨论】:

    标签: java swing layout padding margins


    【解决方案1】:

    从 Java 1.6 swing 开始,有一个新的GroupLayout 管理器使这种工作变得更容易。

    例如有一个方法:setAutoCreateGaps()

    ...您将两个组件添加到 SequentialGroup 会自动创建两个组件之间的间隙...

    例如:

    【讨论】:

    • 那个组的布局看起来不错,我试试看。通过使用 GroupLayout,用户必须至少有 Java 6 运行时?
    • 没错,需要 1.6。我认为如果用户的版本小于 1.6,您可以获取 GroupLayout 的源代码并将其与您的应用程序一起发布。毕竟它是开源的。我比 GridbagLayout 更喜欢这个,因为你不需要所有那些 gridbagcontraints 对象:)
    【解决方案2】:

    FormLayout 是另一个不错的布局管理器。使用像 JFormDesigner 这样的良好 GUI 编辑器,它使 GUI 构建变得足够容易。在大多数情况下,JFormDesigner 实际上会自动添加足够的填充。我不得不建议不要使用 GridBagLayout。它可以很好地完成工作,但非常复杂,难以使用和维护。

    【讨论】:

    • 也许吧,但我写的是开源的,JFormDesigner 不是免费的。也许对于其他人......
    【解决方案3】:

    您可以通过在几行代码中使用DesignGridLayout(在您的布局中每行一行)为上面的示例实现更好的布局。 DesignGridLayout 将自动为运行时平台使用正确的间距。

    此外,我强烈建议您不要在表单中使用 TitledBorders,因为它会阻止任何 LayoutManager(尽可能先进)自动正确对齐不同组中的各种组件。相反,您可以将 JLabel 与 JSeparator 一起使用(DesignGridLayout 中有示例,但这适用于任何其他 LayoutManager)。

    【讨论】:

    • 哦,这就是您解决 V 对齐问题的方法,非常感谢。关于DesignGridLayout正如我所说:我不愿意在项目中添加另一个依赖项。
    • 没问题!但是您应该知道,使用“纯”Swing(没有任何第三方库,不仅用于布局,还用于表格、特殊小部件......)是一个很大的痛苦!无论如何你的选择;-)
    【解决方案4】:

    看看GridBagLayoutManager。它是最复杂的布局管理器,但一切都可以通过它完成。

    它使用具有 inset 属性的GridBagConstraintObject,它指定了上、下、左、右组件的分隔。

    示例:GridBagConstraintObject.insets.left=20

    【讨论】:

      【解决方案5】:

      你用的是什么LayoutManager?添加边距非常简单,但取决于所使用的特定 LayoutManager。

      【讨论】:

      • 这是一个带有水平 Box(es) 的垂直 BoxLayout。
      【解决方案6】:

      您可以使用MiGLayout 作为您的布局管理器。它允许各种自定义,包括边距/填充。

      【讨论】:

      • 谢谢,这可能是一个更好的解决方案,但目前我不愿意为项目添加另一个依赖项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多