|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。