Module java.desktop
Package javax.swing

Class Spring

java.lang.Object
javax.swing.Spring

public abstract class Spring extends Object
Spring类的一个实例包含三个特性,用于描述其行为:最小值首选值最大值。每个特性可能参与定义第四个特性,根据一系列规则。

Spring类的一个实例可以被视为一个机械弹簧,当弹簧被压缩或拉伸远离其首选值时,提供一个校正力。这个力被建模为距离首选值的线性函数,但有两个不同的常数--一个用于压缩力,一个用于张力。这些常数由弹簧的最小值和最大值指定,使得当弹簧处于最小值时产生一个与当它处于最大值时产生的相等且相反的力。因此,首选值最小值之间的差异代表了弹簧可以被压缩的容易程度,而最大值首选值之间的差异表示了Spring可以被延伸的容易程度。查看sum(javax.swing.Spring, javax.swing.Spring)方法获取详细信息。

通过在Spring上定义简单的算术操作,一组Spring的行为可以简化为普通(非复合)Spring的行为。我们定义了Spring上的"+", "-", maxmin运算符,使得在每种情况下,结果是一个Spring,其特性与其组成弹簧之间具有有用的数学关系。

一个Spring可以被视为具有单个公共点的一对区间:首选值。以下规则定义了可以应用于区间的一些算术运算符([a, b]指的是从ab的区间,其中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实例,其中包含对方法参数的引用,以便新弹簧的特性跟踪可能变化的原始弹簧的特性。这有点像函数语言中的惰性值的概念。

如果您正在实现SpringLayout,您可以在The Java TutorialHow to Use SpringLayout部分中找到更多信息和示例。

警告:此类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans包中。请参阅XMLEncoder

自1.4版本起:
1.4
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    一个整数值,表示属性值尚未计算。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Spring()
    用于创建Spring的工厂方法。
  • Method Summary

    Modifier and Type
    Method
    Description
    static Spring
    constant(int pref)
    返回一个支柱--其最小值首选值最大值每个具有值pref的弹簧。
    static Spring
    constant(int min, int pref, int max)
    返回一个弹簧,其最小值首选值最大值分别具有值:minprefmax
    abstract int
    返回此Spring最大值
    abstract int
    返回此Spring最小值
    abstract int
    返回此Spring首选值
    abstract int
    返回此Spring的当前
    static Spring
    返回一个弹簧,其最小值首选值最大值属性由所提供组件的minimumSizepreferredSizemaximumSizesize属性的高度定义。
    static Spring
    max(Spring s1, Spring s2)
    返回max(s1, s2):一个弹簧,其值始终大于(或等于)s1s2的值。
    static Spring
    返回-s:一个与s方向相反的弹簧。
    static Spring
    scale(Spring s, float factor)
    返回一个弹簧,其最小值首选值最大值属性分别是参数弹簧s的属性的倍数。
    abstract void
    setValue(int value)
    将此Spring的当前设置为value
    static Spring
    sum(Spring s1, Spring s2)
    返回s1+s2:表示s1s2串联的弹簧。
    static Spring
    返回一个弹簧,其最小值首选值最大值属性由所提供组件的minimumSizepreferredSizemaximumSizesize属性的宽度定义。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • UNSET

      public static final int UNSET
      一个整数值,表示属性值尚未计算。
      参见:
  • Constructor Details

  • Method Details

    • getMinimumValue

      public abstract int getMinimumValue()
      返回此Spring最小值
      返回:
      SpringminimumValue属性
    • getPreferredValue

      public abstract int getPreferredValue()
      返回此Spring首选值
      返回:
      SpringpreferredValue
    • getMaximumValue

      public abstract int getMaximumValue()
      返回此Spring最大值
      返回:
      SpringmaximumValue属性
    • getValue

      public abstract int getValue()
      返回此Spring的当前
      返回:
      Springvalue属性
      参见:
    • setValue

      public abstract void setValue(int value)
      将此Spring的当前设置为value
      参数:
      value - 新的value属性设置
      参见:
    • constant

      public static Spring constant(int pref)
      返回一个支柱--其最小值首选值最大值每个具有值pref的弹簧。
      参数:
      pref - 新弹簧的最小值首选值最大值
      返回:
      一个弹簧,其最小值首选值最大值每个具有值pref
      参见:
    • constant

      public static Spring constant(int min, int pref, int max)
      返回一个弹簧,其最小值首选值最大值分别具有值:minprefmax
      参数:
      min - 新弹簧的最小值
      pref - 新弹簧的首选值
      max - 新弹簧的最大值
      返回:
      一个弹簧,其最小值首选值最大值分别具有值:minprefmax
      参见:
    • minus

      public static Spring minus(Spring s)
      返回-s:一个与s方向相反的弹簧。
      参数:
      s - 一个Spring对象
      返回:
      -s:一个与s方向相反的弹簧
      参见:
    • sum

      public static Spring sum(Spring s1, Spring s2)
      返回s1+s2:表示串联s1s2的弹簧。在两个弹簧s1s2的和s3中,s1s2s3的应变保持在相同的水平(在其整数所暗示的精度范围内)。压缩弹簧的应变为:
               value - pref
               ------------
                pref - min
      
      张力弹簧的应变为:
               value - pref
               ------------
                max - pref
      
      当在总和弹簧s3上调用setValue时,将使用上述公式之一计算s3中的应变。一旦知道总和的应变,s1s2将被设置,以使它们的应变等于总和的应变。这些公式被评估以考虑四舍五入误差,并确保s1s2之和恰好等于s3
      参数:
      s1 - 一个Spring对象
      s2 - 一个Spring对象
      返回:
      s1+s2:表示串联s1s2的弹簧
      参见:
    • max

      public static Spring max(Spring s1, Spring s2)
      返回max(s1, s2):一个弹簧,其值始终大于(或等于)s1s2的值。
      参数:
      s1 - 一个Spring对象
      s2 - 一个Spring对象
      返回:
      max(s1, s2):一个弹簧,其值始终大于(或等于)s1s2的值
      参见:
    • scale

      public static Spring scale(Spring s, float factor)
      返回一个弹簧,其最小值首选值最大值属性分别是参数弹簧s的属性的倍数。当factor为负时(根据区间算术规则),最小值和最大值属性将被交换。

      例如,当因子为0.5f时,结果代表其输入的“中点” - 这是用于在容器中居中组件的操作。

      参数:
      s - 要缩放的弹簧
      factor - 缩放量
      返回:
      一个弹簧,其属性是输入弹簧s的属性乘以factor
      抛出:
      NullPointerException - 如果s为null
      自:
      1.5
    • width

      public static Spring width(Component c)
      返回一个弹簧,其最小值首选值最大值属性由所提供组件的minimumSizepreferredSizemaximumSizesize属性的宽度定义。返回的弹簧是一个“包装”实现,其方法调用所提供组件的适当大小方法。因此,返回的弹簧的最小值、首选值、最大值和值属性报告了组件中适当属性的当前状态,并在其更改时跟踪它们。
      参数:
      c - 用于计算大小的组件
      返回:
      一个弹簧,其属性由组件的大小方法的水平部分定义。
      抛出:
      NullPointerException - 如果c为null
      自:
      1.5
    • height

      public static Spring height(Component c)
      返回一个弹簧,其最小值首选值最大值属性由所提供组件的minimumSizepreferredSizemaximumSizesize属性的高度定义。返回的弹簧是一个“包装”实现,其方法调用所提供组件的适当大小方法。因此,返回的弹簧的最小值、首选值、最大值和值属性报告了组件中适当属性的当前状态,并在其更改时跟踪它们。
      参数:
      c - 用于计算大小的组件
      返回:
      一个弹簧,其属性由组件的大小方法的垂直部分定义。
      抛出:
      NullPointerException - 如果c为null
      自:
      1.5