java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

javax.swing
类 SizeSequence

java.lang.Object
  继承者 javax.swing.SizeSequence

public class SizeSequence
extends Object

一个 SizeSequence 对象,它有效地维护一个包含大小和相应位置的顺序列表。有一种情况需要用到 SizeSequence,即显示具有不同大小的多个行的组件。在这种情况下,用一个单独的 SizeSequence 对象可跟踪所有行的高度和 Y 位置。

另一个例子是包含多列的组件,比如 JTable,它的各列大小不尽相同。JTable 可使用一个单独的 SizeSequence 对象来存储所有列的宽度和 X 位置。然后,JTable 可以使用 SizeSequence 对象来查找与特定位置对应的列。只要有一列或多列大小发生更改,JTable 就会更新该 SizeSequence 对象。

下图显示了多列组件中大小和位置数据之间的关系。

第一项起始位置为 0,第二项起始位置等于
前一项的大小,依此类推。

在上图中,第一个索引 (0) 对应第一列,第二个索引 (1) 对应第二列,依此类推。第一列位置从 0 开始,该列占据 size0 个像素,其中 size0getSize(0) 返回的值。因此,第一列在 size0 - 1 位置结束。然后第二列从 size0 位置开始并占据 size1 (getSize(1)) 个像素。

注意,SizeSequence 对象只代表轴上的间隔。在我们的示例中,间隔代表以像素为单位的高度或宽度。但是,任何其他测量单位(例如,时间单位为天)也同样有效。

实现注意事项

通常,存储条目的大小和位置时,我们会选择是存储条目的大小还是位置。呈现时需要两个公共操作:getIndex(position)setSize(index, size)。无论选择哪种内部格式,当条目数变大时,这两个操作中每一个开销都很大。如果存储的是大小,查找位于特定位置的条目索引与条目数呈线性关系。反过来,如果存储的是位置,对位于特定索引的条目设置大小需要更新相关条目的位置,这又是一个线性计算。

与以上技巧相似,此类内部保存一个包含 N 个整数的数组,但它使用混合编码,这是介于基于大小和基于位置的方法之间一种折中方法。结果为一个数据结构,它存储信息需要相同大小的空间,但是执行大多数操作只需要 Log(N) 次,而不是 O(N) 次,N 是列表中的条目数。

有两个操作还需要执行 O(N) 条目数次,它们就是 insertEntriesremoveEntries 方法,两者的实现方法都是将内部数组转换为一组整数大小,将它复制到新数组,然后将混合表示形式重新正确归位。


构造方法摘要
SizeSequence()
          创建一个新的 SizeSequence 对象,它不包含任何条目。
SizeSequence(int numEntries)
          创建一个新的 SizeSequence 对象,它包含指定的条目数,每个大小都已初始化为 0。
SizeSequence(int[] sizes)
          创建一个新的 SizeSequence 对象,它包含指定的大小。
SizeSequence(int numEntries, int value)
          创建一个新的 SizeSequence 对象,它包含指定的条目数,每个大小都已初始化为 value
 
方法摘要
 int getIndex(int position)
          返回与指定位置对应的条目的索引。
 int getPosition(int index)
          返回指定条目的起始位置。
 int getSize(int index)
          返回指定条目的大小。
 int[] getSizes()
          返回所有条目的大小。
 void insertEntries(int start, int length, int value)
          将一组相邻的条目添加到此 SizeSequence 中。
 void removeEntries(int start, int length)
          从此 SizeSequence 中移除一组相邻的条目。
 void setSize(int index, int size)
          设置指定条目的大小。
 void setSizes(int[] sizes)
          用 sizes 参数中的数据重置此 SizeSequence 对象。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SizeSequence

public SizeSequence()
创建一个新的 SizeSequence 对象,它不包含任何条目。要添加条目,可使用 insertEntriessetSizes

另请参见:
insertEntries(int, int, int), setSizes(int[])

SizeSequence

public SizeSequence(int numEntries)
创建一个新的 SizeSequence 对象,它包含指定的条目数,每个大小都已初始化为 0。

参数:
numEntries - 要跟踪的大小数
抛出:
NegativeArraySizeException - 如果 numEntries < 0

SizeSequence

public SizeSequence(int numEntries,
                    int value)
创建一个新的 SizeSequence 对象,它包含指定的条目数,每个大小都已初始化为 value

参数:
numEntries - 要跟踪的大小数
value - 每个大小的初始值

SizeSequence

public SizeSequence(int[] sizes)
创建一个新的 SizeSequence 对象,它包含指定的大小。

参数:
sizes - 要包含在 SizeSequence 中的大小的数组
方法详细信息

setSizes

public void setSizes(int[] sizes)
sizes 参数中的数据重置此 SizeSequence 对象。该方法将此对象重新初始化,这样它可以包含与 sizes 数组一样多的条目。每个条目的大小都初始化为 sizes 中对应项的值。

参数:
sizes - 要包含在此 SizeSequence 中的大小的数组

getSizes

public int[] getSizes()
返回所有条目的大小。

返回:
一个包含此对象中的大小的新数组

getPosition

public int getPosition(int index)
返回指定条目的起始位置。例如,getPosition(0) 返回 0,getPosition(1)getSize(0)相等,getPosition(2) 等于 getSize(0) + getSize(1),依此类推。

注意,如果 index 大于 length,返回的值可能无意义。

参数:
index - 位于期望位置的条目的索引
返回:
指定条目的起始位置

getIndex

public int getIndex(int position)
返回与指定位置对应的条目的索引。例如,由于第一个条目通常从位置 0 开始,getIndex(0) 为 0。

参数:
position - 条目的位置
返回:
占用指定位置的条目的索引

getSize

public int getSize(int index)
返回指定条目的大小。如果 index 超出范围 (0 <= index < getSizes().length),则行为是未指定的。

参数:
index - 与条目对应的索引
返回:
条目的大小

setSize

public void setSize(int index,
                    int size)
设置指定条目的大小。注意,如果 index 值未落在如下范围:(0 <= index < getSizes().length),则行为是未指定的。

参数:
index - 与条目对应的索引
size - 条目的大小

insertEntries

public void insertEntries(int start,
                          int length,
                          int value)
将一组相邻的条目添加到此 SizeSequence 中。注意,startlength 的值必须满足如下条件:(0 <= start < getSizes().length) AND (length >= 0)。如果未满足这些条件,则行为未指定并且可能抛出异常。

参数:
start - 将分配给组中第一个条目的索引
length - 组中的条目数
value - 将分配给每个条目的大小
抛出:
ArrayIndexOutOfBoundsException - 如果参数超出如下范围:(0 <= start < (getSizes().length)) AND (length >= 0)

removeEntries

public void removeEntries(int start,
                          int length)
从此 SizeSequence 中移除一组相邻的条目。注意,startlength 的值必须满足如下条件:(0 <= start < getSizes().length) AND (length >= 0)。如果未满足这些条件,则行为未指定并且可能抛出异常。

参数:
start - 要移除的第一个条目的索引
length - 要移除的条目数

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策