我曾多次因建议使用以下方法而受到批评:
- 设置首选尺寸
- 设置最小尺寸
- 设置最大尺寸
在 Swing
组件上。当我想定义显示组件之间的比例时,我看不到它们的任何替代方法。有人告诉我:
对于布局,答案总是相同的:使用合适的 LayoutManager
我在网上搜索了一下,但没有找到对该主题的任何全面分析。所以我有以下问题:
- 我应该完全避免使用这些方法吗?
- 这些方法的定义是有原因的。那么我应该什么时候使用它们呢?在什么情况下?为了什么目的?
- 使用这些方法的负面后果到底是什么? (我只能考虑在具有不同屏幕分辨率的系统之间增加可移植性)。
- 我认为没有任何 LayoutManager 可以完全满足所有所需的布局需求。我真的需要为我的布局上的每个小变化实现一个新的 LayoutManager 吗?
- 如果对 4 的回答是“是”,这是否会导致 LayoutManager 类的激增而变得难以维护?
- 在我需要定义组件子项之间的比例的情况下(例如,child1 应该使用 10% 的空间,child2 40%,child3 50%),是否可以在不实现自定义 LayoutManager 的情况下实现这一点?
原文由 Heisenbug 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的应用程序代码。
我不知道,我个人认为这是一个 API 设计事故。受对子尺寸有特殊想法的复合组件的轻微影响。 “稍微”,因为他们应该已经使用自定义 LayoutManager 实现了他们的需求。
一些(不完整,不幸的是,由于 SwingLabs 迁移到 java.net,链接已断开)技术原因在 规则(呵呵) 中或在他/她对 我的回答 的评论中找到的 链接@bendicott 中提到。在社交方面,将大量工作交给你不幸的家伙,他必须维护代码并且必须追踪损坏的布局。
是的,有足够强大的 LayoutManager 可以很好地满足“所有布局需求”。三大类是 JGoodies FormLayout、MigLayout、DesignGridLayout。所以不,在实践中,除了简单的高度专业化的环境外,您很少编写 LayoutManagers。
(对 4 的回答是“否”。)
三巨头中的任何一个都可以,甚至 GridBag 都不能(从来没有费心去真正掌握,因为太少的力量太麻烦了)。