我应该避免在JavaSwing中使用set(首选的|最大|最小)大小方法吗?

我曾多次因建议使用以下方法而受到批评:

  1. setPreferredSize
  2. setMinimumSize
  3. setMaximumSize

Swing组件上。当我想定义显示组件之间的比例时,我看不到任何替代方法。有人告诉我:

对于布局,答案总是一样的:使用合适的
布局经理

我在网上搜索了一下,但没有找到任何关于这个主题的全面分析。因此,我有以下问题:

  1. 我应该完全避免使用这些方法吗
  2. 定义这些方法是有原因的。那么我应该什么时候使用它们呢?在哪种情况下?为了什么目的
  3. 使用这些方法的负面后果到底是什么?(我只能考虑在不同屏幕分辨率的系统之间增加可移植性)
  4. 我认为任何布局经理都不能完全满足所有期望的布局需求。我真的需要为布局上的每一个小变化实施一个新的LayoutManager吗
  5. 如果对4的回答是“是”,这是否会导致LayoutManager类的激增,这将变得难以维护
  6. 如果我需要定义组件子级之间的比例(例如,child1应使用10%的空间,child2应使用40%,child3应使用50%),是否可以在不实施自定义LayoutManager的情况下实现这一点
  1. 我应该完全避免使用这些方法吗

    申请代码是

  2. 定义这些方法是有原因的。那么我应该什么时候使用它们呢?在哪种情况下?为了什么目的

    我不知道,我个人认为这是一个API设计事故。对子尺寸有特殊想法的复合组件稍微施加压力。“轻微”,因为他们应该通过定制的LayoutManager实现他们的需求

  3. 使用这些方法的负面后果到底是什么?(我只能考虑在不同屏幕分辨率的系统之间增加可移植性。)

    例如规则(呵呵)或在在bendicott对我的答案。在社交方面,把大量的工作强加给你的不幸伙伴,他必须维护代码,并且必须追踪一个坏的布局

  4. 我认为任何布局经理都不能完全满足所有期望的布局需求。我真的需要为布局上的每一个小变化实施一个新的LayoutManager吗

    是的,有足够强大的布局管理器,能够很好地满足“所有布局需求”。三大布局分别是JGoodies FormLayout、MigLayout、DesignGridLayout。因此,实际上,除了简单的高度专业化的环境之外,您很少编写LayoutManager

  5. 如果对4的回答是“是”,这是否会导致LayoutManager类的激增,这将变得难以维护

    (4的答案是“否”。)

  6. 在需要定义组件子级之间比例的情况下(例如,子级1应使用10%的空间,子级2应使用40%,子级3应使用50%),是否可以在不实施自定义LayoutManager的情况下实现这一点

    三巨头中的任何一个都可以,甚至连GridBag都不能(从来都懒得真正掌握,太麻烦了,功率太小了)

发表评论