【问题标题】:Panel to resize only specified components面板仅调整指定组件的大小
【发布时间】:2012-07-02 17:49:29
【问题描述】:

我想创建存储多个组件的面板,但仅在调整面板大小时调整我想要的组件的大小。例如,如果我有存储 1 个标签和 2 个文本字段的面板,我希望能够告诉它只调整文本字段的大小而不是标签大小。是否有任何布局已经这样做了,还是我必须开始学习编写自定义布局?

【问题讨论】:

  • 如需更好的帮助,请尽快发帖SSCCE
  • GridBagLayout,是你的朋友,有这样的需求 :-) 在这里你可以指定 GridBagConstraints.fill 属性来定义你希望你的组件如何填充扩展区域。它可以具有来自BOTH, VERTICAL, HORIZONTAL and NONE 的任何值

标签: java swing layout resize panel


【解决方案1】:

有可用的布局管理器包含该行为(嗯,有点)。例如,FormLayout from JGoodies 允许将您的面板分成几列,并指定每一列的调整大小行为。

一个典型的用例是您有一个类似表单的结构(第 1 列包含标签,第 2 列是输入字段),您希望调整大小以仅调整第二列的大小,确保标签的可见性并让输入字段使用所有可用的额外空间。

【讨论】:

  • 或 MigLayout (SpringLayout) +1
【解决方案2】:

您可以明确地将所有不想调整大小的组件大小设置为相同的值。

例如:

Jlabel aLabel = new Jlabel("text");
Dimension d = new Dimension(50,20);
aLabel.setPreferredSize(d);
aLabel.setMinimumSize(d);
aLabel.setMaximumSize(d);

【讨论】:

  • 我建议您不要使用此解决方案,因为您可能会违反 L&F 的具体规定。有许多 LayoutManagers,您可以在其中指明您想要的首选大小,而不是更多,而不是更少。
  • @Rohit Malish:嗯,这是真的。我建议先尝试一下。然后就您面临的具体问题提出新问题。
  • “我先提议” 我提议不给出几乎可以肯定的答案.
【解决方案3】:

默认情况下,没有布局管理器查看类型然后决定采取行动。您可以使用不同的容器来模拟该行为,但实现自己的布局管理器将是更干净的解决方案恕我直言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 2013-08-25
    相关资源
    最近更新 更多