【发布时间】:2013-09-13 21:08:53
【问题描述】:
我正在使用 Swing 在 Java 中编写 GUI。
FlowLayout 将对象调整到其首选大小。如果超出容器的宽度,FlowLayout 会创建一个新行。
其他布局管理器会调整组件的大小以填满所有可用空间。我想在这里做同样的事情,以便文本字段在第一个示例中自动填充顶行的所有可用空间,并在第二个示例中填充整个第二行。当没有足够的空间容纳标签和文本字段且文本字段不小于其首选大小时,布局将换行。
是否有提供这两种功能的 SDK 布局管理器 - 组件的包装和自动调整大小?还是我必须扩展 FlowLayout?在不同的布局管理器中实现包装会更容易吗?
【问题讨论】:
-
不要试图扩展一个不是为扩展而设计的类。您最终会编写仅包含变通方法的代码,并且无论如何都必须重新实现整个逻辑。您必须实现自己的 LayoutManager。
-
Is there an SDK layout manager that provides both these features - wrapping and automatic- 不。通常人们设计带有标签/文本字段对的表单,并将每个组放在自己的行上。您可以为此使用 GridBagLayout。 -
@camickr 那么我将如何为单个标签/文本对执行此操作,如本例所示?
-
对不起,我看错了要求。您将无法使用我所知道的任何布局管理器来执行此操作。你可以自己写。真的应该太难了,看起来你的要求很严格。