JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 GapContent

java.lang.Object
  繼承者 javax.swing.text.GapContent
所有已實作的介面:
Serializable, AbstractDocument.Content

public class GapContent
extends Object
implements AbstractDocument.Content, Serializable

AbstractDocument.Content 介面的一個實作,使用類似於 emacs 使用的間隙緩衝區來實作。基礎存儲是一個 unicode 字元陣列,在陣列的某個位置存在間隙。將該間隙移動到要進行更改的位置,以便利用一般行為,讓多數更改都在原來的位置上進行。在間隙邊界發生更改通常很容易,而且移動間隙通常比直接移動陣列內容來適應更改要更容易。

追蹤更改的位置也通常容易維護。Position 實作(標記)存儲陣列索引,並可方便地根據當前間隙位置計算連續位置。更改只需要更新移動間隙時新舊間隙邊界之間的標記,因此更新標記通常會相當容易。該標記是按順序存儲的,所以可以使用二分尋找法快速找到。這提高了添加標記的成本,但降低了保持標記更新的成本。


建構子摘要
GapContent()
          創建新的 GapContent 物件。
GapContent(int initialLength)
          創建具有指定初始大小的新 GapContent 物件。
 
方法摘要
protected  Object allocateArray(int len)
          分派一個存儲適當型別項的陣列(由子類別確定)。
 Position createPosition(int offset)
          在內容中創建一個位置,使其在內容發生變化時能追蹤內容的更改。
protected  Object getArray()
          Access to the array.
protected  int getArrayLength()
          獲取分派的陣列的長度。
 void getChars(int where, int len, Segment chars)
          檢索部分內容。
protected  int getGapEnd()
          Access to the end of the gap.
protected  int getGapStart()
          Access to the start of the gap.
protected  Vector getPositionsInRange(Vector v, int offset, int length)
          返回一個套件含 UndoPosRef 實例的 Vector,其 Position 的範圍從 offsetoffset + length
 String getString(int where, int len)
          檢索部分內容。
 UndoableEdit insertString(int where, String str)
          在內容中插入字元串。
 int length()
          返回內容的長度。
 UndoableEdit remove(int where, int nitems)
          移除部分內容。
protected  void replace(int position, int rmSize, Object addItems, int addSize)
          Replace the given logical position in the storage with the given new items.
protected  void resetMarksAtZero()
          重新設置具有 0 偏移量的所有標記,使其也有零索引。
protected  void shiftEnd(int newSize)
          擴大間隙、移動任何必要的資料和更新適當的標記。
protected  void shiftGap(int newGapStart)
          將間隙的起始點移動到新位置,而不更改間隙的大小。
protected  void shiftGapEndUp(int newGapEnd)
          調整間隙,使其結尾向前擴展。
protected  void shiftGapStartDown(int newGapStart)
          調整間隙,使其結尾向後擴展。
protected  void updateUndoPositions(Vector positions, int offset, int length)
          重新設置處在 positions 的所有 UndoPosRef 實例的位置。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

GapContent

public GapContent()
創建新的 GapContent 物件。初始大小預設為 10。


GapContent

public GapContent(int initialLength)
創建具有指定初始大小的新 GapContent 物件。初始大小不允許小於 2,以便留出空間供再次包含間隙和拆分操作。

參數:
initialLength - 初始大小
方法詳細資訊

allocateArray

protected Object allocateArray(int len)
分派一個存儲適當型別項的陣列(由子類別確定)。


getArrayLength

protected int getArrayLength()
獲取分派的陣列的長度。


length

public int length()
返回內容的長度。

指定者:
介面 AbstractDocument.Content 中的 length
返回:
長度,該值 >= 1
另請參見:
AbstractDocument.Content.length()

insertString

public UndoableEdit insertString(int where,
                                 String str)
                          throws BadLocationException
在內容中插入字元串。

指定者:
介面 AbstractDocument.Content 中的 insertString
參數:
where - 起始位置,該值 >= 0 且 < length()
str - 要插入的非 null 字元串
返回:
撤消的 UndoableEdit 物件
拋出:
BadLocationException - 如果指定位置無效
另請參見:
AbstractDocument.Content.insertString(int, java.lang.String)

remove

public UndoableEdit remove(int where,
                           int nitems)
                    throws BadLocationException
移除部分內容。

指定者:
介面 AbstractDocument.Content 中的 remove
參數:
where - 起始位置,該值 >= 0 且 where + nitems < length()
nitems - 要移除的字元數,該值 >= 0
返回:
撤消的 UndoableEdit 物件
拋出:
BadLocationException - 如果指定位置無效
另請參見:
AbstractDocument.Content.remove(int, int)

getString

public String getString(int where,
                        int len)
                 throws BadLocationException
檢索部分內容。

指定者:
介面 AbstractDocument.Content 中的 getString
參數:
where - 起始位置,該值 >= 0
len - 要檢索的長度,該值 >= 0
返回:
一個表示該內容的字元串
拋出:
BadLocationException - 如果指定位置無效
另請參見:
AbstractDocument.Content.getString(int, int)

getChars

public void getChars(int where,
                     int len,
                     Segment chars)
              throws BadLocationException
檢索部分內容。如果所需內容跨越間隙,則要複製該內容。如果所需內容未跨越間隙,則由於它是連續的,所以返回實際的存儲而不用複製。

指定者:
介面 AbstractDocument.Content 中的 getChars
參數:
where - 起始位置,該值 >= 0,where + len <= length()
len - 要檢索的字元數,該值 >= 0
chars - 要在其中返回字元的 Segment 物件
拋出:
BadLocationException - 如果指定位置無效
另請參見:
AbstractDocument.Content.getChars(int, int, javax.swing.text.Segment)

createPosition

public Position createPosition(int offset)
                        throws BadLocationException
在內容中創建一個位置,使其在內容發生變化時能追蹤內容的更改。

指定者:
介面 AbstractDocument.Content 中的 createPosition
參數:
offset - 要追蹤的偏移量,該值 >= 0
返回:
位置
拋出:
BadLocationException - 如果指定位置無效

shiftEnd

protected void shiftEnd(int newSize)
擴大間隙、移動任何必要的資料和更新適當的標記。


shiftGap

protected void shiftGap(int newGapStart)
將間隙的起始點移動到新位置,而不更改間隙的大小。這會移動陣列中的資料和更新相應的標記。


resetMarksAtZero

protected void resetMarksAtZero()
重新設置具有 0 偏移量的所有標記,使其也有零索引。


shiftGapStartDown

protected void shiftGapStartDown(int newGapStart)
調整間隙,使其結尾向後擴展。此操作不移動任何資料,但它一定會更新受邊界更改影響的所有標記。從舊間隙起始點向後到新間隙起始點的所有標記都合併到了間隙的結尾(其位置已被移除)。


shiftGapEndUp

protected void shiftGapEndUp(int newGapEnd)
調整間隙,使其結尾向前擴展。此操作不移動任何資料,但它一定會更新受邊界更改影響的所有標記。從舊間隙結尾點向前到新間隙結尾點的所有標記都合併到了間隙的結尾(其位置已被移除)。


getPositionsInRange

protected Vector getPositionsInRange(Vector v,
                                     int offset,
                                     int length)
返回一個套件含 UndoPosRef 實例的 Vector,其 Position 的範圍從 offsetoffset + length。如果 v 不為 null,則在此處放置比對的 Position。返回具有結果 Position 的向量。

參數:
v - 要使用的 Vector,其位置是向量為 null 時創建的新位置
offset - 起始偏移量,該值 >= 0
length - 長度,該值 >= 0
返回:
實例的集合

updateUndoPositions

protected void updateUndoPositions(Vector positions,
                                   int offset,
                                   int length)
重新設置處在 positions 的所有 UndoPosRef 實例的位置。

這裡指的是內部用法,通常不適合子類別。

參數:
positions - 重新設置 UndoPosRef 實例的位置

getArray

protected final Object getArray()
Access to the array. The actual type of the array is known only by the subclass.


getGapStart

protected final int getGapStart()
Access to the start of the gap.


getGapEnd

protected final int getGapEnd()
Access to the end of the gap.


replace

protected void replace(int position,
                       int rmSize,
                       Object addItems,
                       int addSize)
Replace the given logical position in the storage with the given new items. This will move the gap to the area being changed if the gap is not currently located at the change location.

參數:
position - the location to make the replacement. This is not the location in the underlying storage array, but the location in the contiguous space being modeled.
rmSize - the number of items to remove
addItems - the new items to place in storage.

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only