之间有什么区别DEFAULT_SIZE和PREFERRED_SIZE?
-
23-09-2019 - |
题
我使用摇摆GroupLayout我感到困惑的价值观 GroupLayout.DEFAULT_SIZE
和 GroupLayout.PREFERRED_SIZE
.我从来不知道什么时候利用他们中的每一个在方法一样 GroupLayout.addComponent(Component, int, int, int)
.
假设我有一个代号:
GroupLayout l = ...;
l.setHorizontalGroup(l.createSequentialGroup()
.addComponent(tf1)
.addComponent(tf2));
l.setVerticalGroup(l.createParallelGroup()
.addComponent(tf1)
.addComponent(tf2));
有两个 JTextField
s在一个单一的线奠定了 GroupLayout
(一顺序的集团水平和一个平行小组的垂直).如果我调整窗口现在,两个部件获得可用的空间(50%)。但是我想要的只有第一个文本领域的增长/缩水平,只有第二文本领域的增长/缩垂直。什么价值 min, pref 和 max 我应该用它来完成吗?我知道我可以试试吧,看看什么样的组合的工作,但我想知道背后的推理这个问题。
解决方案
一些指导,可在的发现如何使用的GroupLayout:元件尺寸和可调整大小的。关于DEFAULT_SIZE
和PREFERRED_SIZE
,
它们可以在所述方法中用作参数
addComponent(Component comp, int min, int pref, int max)
要强制的组分是可调整大小(允许收缩和生长):
group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
这允许组件大小为零(最小)之间调整到任何尺寸(如
Short.MAX_VALUE
最大尺寸装置“无限”)。如果我们希望该组件不收缩低于其默认最小大小,我们将在第二个参数使用GroupLayout.DEFAULT_SIZE
而不是0。要使一个组件固定大小(抑制调整大小):
group.addComponent(component, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)...
有趣的是,恒定值是负的,所以它们不能被误认为是实际的约束。
其他提示
我也搞不清楚关于如何 GroupLayout.DEFAULT_SIZE
和 GroupLayout.PREFERRED_SIZE
用在 GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max)
, 甚至后引用GroupLayout部分的教程和一个java.net 文章,题为 越来越知道GroupLayout,第1部分.
潜入JAVA1.6.0_27GroupLayout.javasource我找到答案在ComponentSpring类。从我能够作出这些规则:
如果一个最小尺寸是需要:
- 和所提供的
min
值的非消极的,值返回。 - 否则,如果它
PREFERRED_SIZE
, 我们遵循的规则的首选的大小。 - 别组件的最小尺寸是返回。
如果一个优选的大小需要:
- 和所提供的
pref
值的非消极的,值返回。 - 否则,如果它
DEFAULT_SIZE
或PREFERRED_SIZE
, 返回部件的大小。
如果一个最大尺寸是需要:
- 和所提供的
max
值的非消极的,值返回。 - 否则,如果它
PREFERRED_SIZE
, 我们遵循的规则的首选的大小。 - 别组件的maximumsize返回。
作为trashgod已经指出的,该定义是负面的。其他任何负值分,县和最不管 DEFAULT_SIZE
或 PREFERRED_SIZE
是错误和打的断言。
之间的相互作用 SequentialGroup.addComponent
分,县和最大尺寸并不立即显而易见我的教程。现在我知道为什么 PREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZE
是固定的,为什么不要紧,如果中的论点是 DEFAULT_SIZE
或 PREFERRED_SIZE
和如何内容产生固定的尺寸的价值观 DEFAULT_SIZE,300,Short.MAX_VALUE
的工作。