java.lang.Object javax.swing.Spring
public abstract class Spring
该 Spring
类的实例将存储以下三个表示其行为特征的属性:minimum、preferred 和 maximum 值。根据一系列规则定义其第四个 value 属性时可能涉及其中每一个属性。
该 Spring
类的实例就像从其首选值进行压缩或伸展的 spring 一样,显示为一个提供回复力的机械弹簧。此回复力被建模为从首选值开始的距离的线性函数,但有两个不同的常量 - 一个是压缩力常量,一个是张力常量。这些常量由 spring 的最小值和最大值指定,这样处于最小值的 spring 产生一个与其处于最大值时创建的力相等且相对的力。因此,preferred 和 minimum 值之间的区别表示使用该值压缩 spring 的容易性,其 maximum 和 preferred 值之间的区别指示使用该值扩展 Spring
的容易性。有关详细信息,请参阅 sum(javax.swing.Spring, javax.swing.Spring)
方法。
通过在 Spring
上定义简单的算术运算,可以将 Spring
集合的行为减少到普通(非复合)Spring
的行为。我们在 Spring
上定义 "+"、"-"、max 和 min 运算符,以便每种情况下的结果都是一个 Spring
,其特征是将一个有用的数学关系用于其组成的 spring。
一个 Spring
可以视为一对具有以下单个公共点的区间:首选值。以下规则定义一些可以应用于区间([a, b]
指从 a
到 b
的区间,其中 a <= b
)的算术运算符。
[a1, b1] + [a2, b2] = [a1 + a2, b1 + b2] -[a, b] = [-b, -a] max([a1, b1], [a2, b2]) = [max(a1, a2), max(b1, b2)]
如果我们将 Spring
表示为 [a, b, c]
(其中 a <= b <= c
),则我们可以在 Spring
上定义以下相同的算术运算符:
[a1, b1, c1] + [a2, b2, c2] = [a1 + a2, b1 + b2, c1 + c2] -[a, b, c] = [-c, -b, -a] max([a1, b1, c1], [a2, b2, c2]) = [max(a1, a2), max(b1, b2), max(c1, c2)]
通过这些区间和 Spring
,我们可以根据以下相反数定义 "-" 和 min:
X - Y = X + (-Y) min(X, Y) = -max(-X, -Y)
对于此类中包含算术运算符的静态方法,我们不会像在调用此静态方法时对该方法参数的属性值进行快照一样实际执行相关的操作。相反,该静态方法创建一个新 Spring
实例,该实例包含对该方法参数的引用,以便新 spring 的特征跟踪原来生成它的 spring 的潜在不断变化的特征。这有点类似于函数性语言中 lazy value 的概念。
如果您正在实现一个 SpringLayout
,则可以在 The Java Tutorial 中的 How to Use SpringLayout 一节找到更详细的信息和示例。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
SpringLayout
,
SpringLayout.Constraints
字段摘要 | |
---|---|
static int |
UNSET 一个表示属性值尚未计算的整数值。 |
构造方法摘要 | |
---|---|
protected |
Spring() 由工厂方法创建 Spring 时使用。 |
方法摘要 | |
---|---|
static Spring |
constant(int pref) 返回一个 strut -- 一个其 minimum、preferred 和 maximum 值每个都有值 pref 的 spring。 |
static Spring |
constant(int min, int pref, int max) 返回一个其 minimum、preferred 和 maximum 值具有以下值的 spring:分别是 min 、pref 和 max 。 |
abstract int |
getMaximumValue() 返回此 Spring 的 maximum 值。 |
abstract int |
getMinimumValue() 返回此 Spring 的 minimum 值。 |
abstract int |
getPreferredValue() 返回此 Spring 的 preferred 值。 |
abstract int |
getValue() 返回此 Spring 的当前 value。 |
static Spring |
height(Component c) 返回一个 spring,其 minimum、preferred、maximum 和 value 属性由所提供组件的 minimumSize、preferredSize、maximumSize 和 size 属性的高度定义。 |
static Spring |
max(Spring s1, Spring s2) 返回 max(s1, s2) :一个其值始终大于(或等于)s1 加 s2 的值的 spring。 |
static Spring |
minus(Spring s) 返回 -s :一个以与 s 相反方向运行的 spring。 |
static Spring |
scale(Spring s, float factor) 返回一个 spring,其 minimum、preferred、maximum 和 value 属性都是参数 spring s 的属性的倍数。 |
abstract void |
setValue(int value) 将此 Spring 的当前 value 设置为 value 。 |
static Spring |
sum(Spring s1, Spring s2) 返回 s1+s2 :一个连续表示 s1 和 s2 的 spring。 |
static Spring |
width(Component c) 返回一个 spring,其 minimum、preferred、maximum 和 value 属性由所提供组件的 minimumSize、preferredSize、maximumSize 和 size 属性的宽度定义。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int UNSET
构造方法详细信息 |
---|
protected Spring()
Spring
时使用。
方法详细信息 |
---|
public abstract int getMinimumValue()
Spring
的
minimum 值。
Spring
的
minimumValue
属性
public abstract int getPreferredValue()
Spring
的
preferred 值。
Spring
的
preferredValue
public abstract int getMaximumValue()
Spring
的
maximum 值。
Spring
的
maximumValue
属性
public abstract int getValue()
Spring
的当前
value。
Spring
的
value
属性
setValue(int)
public abstract void setValue(int value)
Spring
的当前
value 设置为
value
。
value
- 该
value
属性的新设置值
getValue()
public static Spring constant(int pref)
pref
的 spring。
pref
- 该新 spring 的
minimum、
preferred 和
maximum 值
pref
的 spring
Spring
public static Spring constant(int min, int pref, int max)
min
、
pref
和
max
。
min
- 新 spring 的
minimum 值
pref
- 新 spring 的
preferred 值
max
- 新 spring 的
maximum 值
min
、
pref
和
max
Spring
public static Spring minus(Spring s)
-s
:一个以与
s
相反方向运行的 spring。
-s
:一个以与
s
相反方向运行的 spring
Spring
public static Spring sum(Spring s1, Spring s2)
s1+s2
:一个连续表示
s1
和
s2
的 spring。从总数上说,
s3
等于两个 spring
s1
和
s2
,
s1
、
s2
和
s3
的
strains 在同一个级别(它们的整数
value 暗示的精度内)上进行维护。压缩形式下的 spring 的 strain 为:
value - pref ------------ pref - min伸展形式下的 spring 的 strain 为:
value - pref ------------ max - pref在对总共 spring(也即
s3
)调用
setValue
时,使用上述某个公式计算
s3
中的 strain。一旦知道了总共的 strain,就能设置
s1
和
s2
的
value,以使它们的 strain 与总共的 strain 相等。对这些公式进行评诂,以便将舍入错误考虑在内并确保
s1
和
s2
的
value 值的总和正好与
s3
的
value 相等。
s1+s2
:一个连续表示
s1
和
s2
的 spring
Spring
public static Spring max(Spring s1, Spring s2)
max(s1, s2)
:一个其值始终大于(或等于)
s1
加
s2
的值的 spring。
max(s1, s2)
:一个其值始终大于(或等于)
s1
加
s2
的值的 spring
Spring
public static Spring scale(Spring s, float factor)
s
的属性的倍数。当
factor
为负(根据间隔算法规则)时,Minimum 和 maximum 属性可以交换。
例如,当因子为 0.5f 时,该结果表示此输入的“中点” - 一种对居中容器中组件很有用的操作。
s
- 要缩放的 spring
factor
- 要缩放的量。
s
乘以
factor
得到的值
NullPointerException
- 如果
s
为 null
public static Spring width(Component c)
c
- 用于计算大小的组件
NullPointerException
- 如果
c
为 null
public static Spring height(Component c)
c
- 用于计算大小的组件
NullPointerException
- 如果
c
为 null