【问题标题】:Column-oriented Layout for Component in JScrollPaneJScrollPane 中组件的列式布局
【发布时间】:2012-02-02 23:08:21
【问题描述】:

我正在开发我的第一个 Swing 应用程序,但我遇到了与我为用户创建的用于在某些字段中输入值的对话窗口有关的布局问题。因为显示的字段数量因用户选择而异,所以我在对话框中使用 JScrollPane,将其视口设置为我添加字段组件的面板。

对于要显示的每个字段,我创建并添加三个组件:

  1. “字段名称”标签
  2. Field 组件(通常是 JTextField,但也可以是 JComboBox 或 JDateChooser 控件)
  3. “字段类型”标签

名称标签:|____| (字符串)

name2label: |__| (数量)

所有这三个组件都可以有不同的长度,所以我的挑战是找到一种整洁的方式来布局这些组件。我一直在做的是将主窗格的布局管理器设置为使用 y 轴的 BoxLayout(即它垂直布局组件)。然后,我为每个字段创建一个窗格,为该窗格设置布局管理器,然后将所有三个字段组件添加到该窗格。我已经为各个窗格尝试了 FlowLayout 和 BoxLayout,但我对这两个布局管理器都有问题。

我将 FlowLayout 管理器设置为使用左对齐,但由于组件的长度不同,这导致了弯曲的列布局。我将 BoxLayout 设置为使用 X 轴(即水平放置东西),但随之而来的组件居中导致每个组件之间的间距很大。在使用单个窗格之前​​,我尝试使用 GridLayout,但我无法让它满足我的三列要求,导致字段跨行拆分。我还简要地看了一篇关于 GroupLayout 管理器的文章,但它看起来很吓人 :)

对于如何以简洁、紧凑的方式在 JScrollPane 中布局不同长度的三个组件的不同行数,是否有人有任何建议?提前谢谢...

谢尔顿 R.

【问题讨论】:

  • 你必须使用网格包布局 - 例如Here
  • 组件应该如何布局?您能否提供一些显示“扩展”视图的某些行的 ASCII 艺术?为什么不在同一个标​​签中包含字段名后面的类型呢?
  • 安德鲁,我编辑了我的问题以对我正在尝试做的事情进行 ASCII 再现。我想在字段名称之后包含类型是一个选项,但我试图模拟我们的用户已经熟悉的主应用程序的外观。另外,如果少一列组件,我是否还会遇到同样的问题?

标签: java swing jscrollpane layout-manager


【解决方案1】:

这是一个常见的问题:MiGLayout 是一个不错的选择。或者,BoxLayout 显示为 hereGroup Layout 显示为 here

【讨论】:

  • 感谢您的建议,伙计们。我没有提到的另一个想法是使用三个垂直窗格,每种类型的组件一个。我会使用 FlowLayout 将这些窗格添加到主窗格中,然后使用面向 Y 轴的 BoxLayout 将组件添加到这些窗格中。当我确定了一种可以实现我想要它的方法时,我会报告回来,但再次感谢大家让我知道我的选择是什么......
【解决方案2】:

也可以看看SpringLayout

【讨论】:

    【解决方案3】:

    更新:我的三栏想法没有成功,原因与我的大多数其他想法没有奏效相同,即 BoxLayout 与大多数布局管理器一样,倾向于扩展组件以填充尽可能多的空间可以,所以我的字段被渲染成巨大的:)

    所以我硬着头皮尝试找出 GroupLayout,基于@trashgod 显示的示例,这与我试图实现的目标相似。在弄清楚如何以 GroupLayout 方式做我想做的事情之后,我最初遇到了同样的扩展字段问题。然后 Oracle GroupLayout 教程向我展示了如何防止组件被调整大小,即使用 addcomponent 方法的四参数版本:addComponent(field, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)我试过了,它就像一个魅力。再次感谢@trashcan 为我指明了正确的方向,并感谢其他所有提出想法的人...

    谢尔顿 R.

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2014-04-30
      • 2016-09-05
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      相关资源
      最近更新 更多