【问题标题】:setting horizontal and vertical margins设置水平和垂直边距
【发布时间】:2011-08-16 18:37:13
【问题描述】:

在面板中设置水平和垂直边距的方法是什么? (与我们在 html 中的 style="margins:30px" 相同)

【问题讨论】:

  • 正如其他人所提到的,您应该只使用边框(Swing 中有一个 EmptyBorder 类可以做到这一点)。但是,我不建议对面板中的边距大小进行硬编码,尤其是使用像素(根据显示器的分辨率,大小可能会发生很大变化)。最好使用 javax.swing.LayoutStyle 来计算右边距。或者更好的是,使用 LayoutManager 为您完成。

标签: java swing jpanel margins


【解决方案1】:

setBorder(BorderFactory.createEmptyBorder(int top, int left, int bottom, int right));

更多详情你可以阅读the documentation about BorderFactory

【讨论】:

  • 当 kleopatra 超过 2 天前提供答案时,您为什么将自己的答案标记为“正确”?
  • @Andrew Thompson 这是我最近找到的最佳答案,因此我更新了答案
【解决方案2】:

不知道html,所以只是猜测可能的等价物:-)

  • 要在组件的边界矩形和它的内容之间设置一些空间,要设置的属性是它的边框
  • 容器中不同组件之间的间距由 LayoutManager 控制(已经提到过)。可配置的细粒度取决于具体实现

【讨论】:

    【解决方案3】:

    为您的 JPanel 使用 BorderLayout

    【讨论】:

      【解决方案4】:

      这在很大程度上取决于您使用的面板类型。 如果这是指摇摆,您可以在其上放置一个 Gridbaglayout 并指定 Insets,如 this example

      【讨论】:

        【解决方案5】:

        使用 LayoutManagers Laying Out Components Within a Container 在 JComponents 之间创建基本的“Gap”

        BorderLayout(int horizontalGap, int verticalGap)

        GridLayout(int rows, int cols, int hgap, int vgap)

        对于最复杂的图形用户界面,你必须

        1/ 多重 JPanel(每个 JPanel 也有不同的 LayoutManager)

        2/ 通过使用How to Use GridBagLayout(通过为每个 JPanel 使用不同 LayoutManegars 的多重 JPanel ...)

        3/ 使用一些自定义 LayoutManager

        【讨论】: