【问题标题】:Java Layout ManagerJava 布局管理器
【发布时间】:2012-08-02 08:10:14
【问题描述】:

我使用 2 行 6 列的网格布局。第一列是标签,第二列是组合。我的问题是

根据标签的大小,组合框的大小也会增加。 我想要一个稳定的组合尺寸?我应该使用哪种布局? 我想要这样的设计

*label1:combo1 label2:combo2 label3:combo3 标签4:文本1 标签5:文本2 标签6:文本3 *

【问题讨论】:

  • combo3 之后所有其他的都放在一个新行中
  • 简单(虽然可能不是您想听到的 :-) 答案是:了解哪个 LayoutManager 做什么,然后选择满足您要求的。 Swing 标签中引用的教程有一个关于布局的章节。

标签: java swing layout-manager grid-layout


【解决方案1】:
  1. GridLayout可以使用JComboBox#setPrototypeDisplayValue,然后可以很方便的在屏幕上设置JComboBox的初始大小

  2. 您可以使用SpringLayoutGridBagLayout

  3. 使用今天的自定义LayoutManagers,例如MigLayout

  4. 注意选择正确的LayoutManager,一切都取决于内容是否应该使用容器调整大小

【讨论】:

    【解决方案2】:

    遍历所有标签并为所有标签设置最大尺寸。

    Label 1             |________________|
    Label Label 2       |________________|
    Label Label Label 3 |________________|
    Label 1             |________________|
    

    【讨论】:

    • “设置..大小”是什么意思?通常,这不是代码所做的,因为它是 LayoutManager 的任务......正如你所知道的 ;-)
    【解决方案3】:

    如果您必须手动编写布局并且使用 3rd 方库没有问题,您可以试试Miglayout

    您还可以使用图形编辑器来布局您的面板。有两种免费工具可以做得不错(我知道):NetBeansEclipse WindowBuilder 附带的一个。

    【讨论】:

      【解决方案4】:

      您可以使用 GridBagLayout,将组合框的 GridBagConstrints.fill 设置为 HORIZONTAL

      【讨论】:

        【解决方案5】:

        GridLayout 中,所有图块都具有相同的大小。

        您应该考虑使用GridBagLayout。您还需要为每个 GUI 元素使用 GridBagConstraints 来指定其位置。

        【讨论】:

          猜你喜欢
          • 2016-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-08
          • 1970-01-01
          • 1970-01-01
          • 2010-10-28
          相关资源
          最近更新 更多