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