|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.swing.SizeSequence
public class SizeSequence
一个 SizeSequence 对象,它有效地维护一个包含大小和相应位置的顺序列表。有一种情况需要用到 SizeSequence,即显示具有不同大小的多个行的组件。在这种情况下,用一个单独的 SizeSequence 对象可跟踪所有行的高度和 Y 位置。
另一个例子是包含多列的组件,比如 JTable,它的各列大小不尽相同。JTable 可使用一个单独的 SizeSequence 对象来存储所有列的宽度和 X 位置。然后,JTable 可以使用 SizeSequence 对象来查找与特定位置对应的列。只要有一列或多列大小发生更改,JTable 就会更新该 SizeSequence 对象。
下图显示了多列组件中大小和位置数据之间的关系。
在上图中,第一个索引 (0) 对应第一列,第二个索引 (1) 对应第二列,依此类推。第一列位置从 0 开始,该列占据 size0 个像素,其中 size0 是 getSize(0) 返回的值。因此,第一列在 size0 - 1 位置结束。然后第二列从 size0 位置开始并占据 size1 (getSize(1)) 个像素。
注意,SizeSequence 对象只代表轴上的间隔。在我们的示例中,间隔代表以像素为单位的高度或宽度。但是,任何其他测量单位(例如,时间单位为天)也同样有效。
getIndex(position) 和 setSize(index, size)。无论选择哪种内部格式,当条目数变大时,这两个操作中每一个开销都很大。如果存储的是大小,查找位于特定位置的条目索引与条目数呈线性关系。反过来,如果存储的是位置,对位于特定索引的条目设置大小需要更新相关条目的位置,这又是一个线性计算。
与以上技巧相似,此类内部保存一个包含 N 个整数的数组,但它使用混合编码,这是介于基于大小和基于位置的方法之间一种折中方法。结果为一个数据结构,它存储信息需要相同大小的空间,但是执行大多数操作只需要 Log(N) 次,而不是 O(N) 次,N 是列表中的条目数。
有两个操作还需要执行 O(N) 条目数次,它们就是 insertEntries 和 removeEntries 方法,两者的实现方法都是将内部数组转换为一组整数大小,将它复制到新数组,然后将混合表示形式重新正确归位。
| 构造方法摘要 | |
|---|---|
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 |
| 构造方法详细信息 |
|---|
public SizeSequence()
SizeSequence 对象,它不包含任何条目。要添加条目,可使用 insertEntries 或 setSizes。
insertEntries(int, int, int),
setSizes(int, int)public SizeSequence(int numEntries)
SizeSequence 对象,它包含指定的条目数,每个大小都已初始化为 0。
numEntries - 要跟踪的大小数
NegativeArraySizeException - 如果 numEntries < 0
public SizeSequence(int numEntries,
int value)
SizeSequence 对象,它包含指定的条目数,每个大小都已初始化为 value。
numEntries - 要跟踪的大小数value - 每个大小的初始值public SizeSequence(int[] sizes)
SizeSequence 对象,它包含指定的大小。
sizes - 要包含在 SizeSequence 中的大小的数组| 方法详细信息 |
|---|
public void setSizes(int[] sizes)
sizes 参数中的数据重置此 SizeSequence 对象。该方法将此对象重新初始化,这样它可以包含与 sizes 数组一样多的条目。每个条目的大小都初始化为 sizes 中对应项的值。
sizes - 要包含在此 SizeSequence 中的大小的数组public int[] getSizes()
public int getPosition(int index)
getPosition(0) 返回 0,getPosition(1) 与 getSize(0)相等,getPosition(2) 等于 getSize(0) + getSize(1),依此类推。
注意,如果 index 大于 length,返回的值可能无意义。
index - 位于期望位置的条目的索引
public int getIndex(int position)
getIndex(0) 为 0。
position - 条目的位置
public int getSize(int index)
index 超出范围 (0 <= index < getSizes().length),则行为是未指定的。
index - 与条目对应的索引
public void setSize(int index,
int size)
index 值未落在如下范围:(0 <= index < getSizes().length),则行为是未指定的。
index - 与条目对应的索引size - 条目的大小
public void insertEntries(int start,
int length,
int value)
SizeSequence 中。注意,start 和 length 的值必须满足如下条件:(0 <= start < getSizes().length) AND (length >= 0)。如果未满足这些条件,则行为未指定并且可能抛出异常。
start - 将分配给组中第一个条目的索引length - 组中的条目数value - 将分配给每个条目的大小
ArrayIndexOutOfBoundsException - 如果参数超出如下范围:(0 <= start < (getSizes().length)) AND (length >= 0)
public void removeEntries(int start,
int length)
SizeSequence 中移除一组相邻的条目。注意,start 和 length 的值必须满足如下条件:(0 <= start < getSizes().length) AND (length >= 0)。如果未满足这些条件,则行为未指定并且可能抛出异常。
start - 要移除的第一个条目的索引length - 要移除的条目数
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。