JavaTM 2 Platform
Standard Ed. 6

java.awt.font
類別 TextMeasurer

java.lang.Object
  繼承者 java.awt.font.TextMeasurer
所有已實作的介面:
Cloneable

public final class TextMeasurer
extends Object
implements Cloneable

TextMeasurer 類別提供換行所需的基本操作:測量到給定的 advance,確定字元範圍的 advance,並為字元範圍產生一個 TextLayout。該類別還提供了段落增量編輯的方法。

TextMeasurer 物件是使用表示單個文本段落的 AttributedCharacterIterator 建構的。AttributedCharacterIteratorgetBeginIndex 方法返回的值定義了第一個字元的絕對索引。AttributedCharacterIteratorgetEndIndex 方法返回的值定義了最後一個字元後的索引。這些值定義了調用 TextMeasurer 的時使用的索引範圍。例如,要通過調用獲取文本範圍的 advance 或文本範圍的換行,則必須使用開始索引值和結束索引值之間的索引。調用 insertChardeleteChar 重置 TextMeasurer 要使用在這些調用中傳入的 AttributedCharacterIterator 的開始索引和結束索引。

大多數客戶端將使用更方便的 LineBreakMeasurer,它實作了標準的換行策略(在每一行上放置盡可能多的適合的單詞)。

從以下版本開始:
1.3
另請參見:
LineBreakMeasurer

建構子摘要
TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
          從源文本建構 TextMeasurer
 
方法摘要
protected  Object clone()
          創建並返回此物件的一個副本。
 void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
          從當前由此 TextMeasurer 表示的段落中刪除一個字元後,更新 TextMeasurer
 float getAdvanceBetween(int start, int limit)
          返回從 start 開始並包括一直到 limit 的字元的行的圖形寬度。
 TextLayout getLayout(int start, int limit)
          返回給定字元範圍上的 TextLayout
 int getLineBreakIndex(int start, float maxAdvance)
          返回不能置於文本行上的第一個字元,該文本行從 start 開始並可能測量到圖形寬度的 maxAdvance
 void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
          在將單個字元插入當前由此 TextMeasurer 表示的段落中後,更新該 TextMeasurer
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

TextMeasurer

public TextMeasurer(AttributedCharacterIterator text,
                    FontRenderContext frc)
從源文本建構 TextMeasurer。源文本應為一個整段。

參數:
text - 源段落。不能為 null。
frc - 關於需要正確測量文本的圖形設備的資訊。不能為 null。
方法詳細資訊

clone

protected Object clone()
從類別 Object 複製的描述
創建並返回此物件的一個副本。「副本」的準確含義可能依賴於物件的類別。這樣做的目的是,對於任何物件 x,表達式:
x.clone() != x
為 true,表達式:
x.clone().getClass() == x.getClass()
也為 true,但這些並非必須要滿足的要求。一般情況下:
x.clone().equals(x)
true,但這並非必須要滿足的要求。

按照慣例,返回的物件應該通過調用 super.clone 獲得。如果一個類別及其所有的父級類別(Object 除外)都遵守此約定,則 x.clone().getClass() == x.getClass()

按照慣例,此方法返回的物件應該獨立於該物件(正被複製的物件)。要獲得此獨立性,在 super.clone 返回物件之前,有必要對該物件的一個或多個欄位進行修改。這通常意味著要複製包含正在被複製物件的內部「深層結構」的所有可變物件,並使用對副本的參考替換對這些物件的參考。如果一個類別只包含基本欄位或對不變物件的參考,那麼通常不需要修改 super.clone 返回的物件中的欄位。

Object 類別的 clone 方法執行特定的複製操作。首先,如果此物件的類別不能實作介面 Cloneable,則會拋出 CloneNotSupportedException。注意,所有的陣列都被視為實作介面 Cloneable。否則,此方法會創建此物件的類別的一個新實例,並像通過分派那樣,嚴格使用此物件相應欄位的內容初始化該物件的所有欄位;這些欄位的內容沒有被自我複製。所以,此方法執行的是該物件的「淺表複製」,而不「深層複製」操作。

Object 類別本身不實作介面 Cloneable,所以在類別為 Object 的物件上調用 clone 方法將會導致在運行時拋出異常。

覆寫:
類別 Object 中的 clone
返回:
此實例的一個副本。
另請參見:
Cloneable

getLineBreakIndex

public int getLineBreakIndex(int start,
                             float maxAdvance)
返回不能置於文本行上的第一個字元,該文本行從 start 開始並可能測量到圖形寬度的 maxAdvance

參數:
start - 從此處開始測量的字元索引。start 是一個絕對索引,而不是相對於段落開始處的相對索引
maxAdvance - 文本行必須符合的圖形寬度
返回:
置於從 start 開始、不長於 maxAdvance 文本行上的最後一個字元後的索引
拋出:
IllegalArgumentException - 如果 start 小於段落的開始位置。

getAdvanceBetween

public float getAdvanceBetween(int start,
                               int limit)
返回從 start 開始並包括一直到 limit 的字元的行的圖形寬度。startlimit 是絕對索引,不是相對於段落開始處的相對索引。

參數:
start - 開始測量的字元索引
limit - 停止測量的字元索引
返回:
start 處開始並包括一直到 limit 的字元的行的圖形寬度
拋出:
IndexOutOfBoundsException - 如果 limit 小於 start
IllegalArgumentException - 如果 startlimit 不在段落開始處和段落結束處之間。

getLayout

public TextLayout getLayout(int start,
                            int limit)
返回給定字元範圍上的 TextLayout

參數:
start - 第一個字元的索引
limit - 最後一個字元之後的索引。必須大於 start
返回:
start 開始(不包括)直到 limit 的字元的 TextLayout
拋出:
IndexOutOfBoundsException - 如果 limit 小於 start
IllegalArgumentException - 如果 startlimit 不在段落開始處和段落結束處之間。

insertChar

public void insertChar(AttributedCharacterIterator newParagraph,
                       int insertPos)
在將單個字元插入當前由此 TextMeasurer 表示的段落中後,更新該 TextMeasurer。在此調用後,該 TextMeasurer 等效於從文本創建的新 TextMeasurer;不過,更新現有 TextMeasurer 通常比重新創建一個新 TextMeasurer 效率更高。

參數:
newParagraph - 執行插入後段落的文本。不能為 null。
insertPos - 插入字元在文本中的位置。不能小於 newParagraph 的開始,且必須小於 newParagraph 的結束。
拋出:
IndexOutOfBoundsException - 如果 insertPos 小於 newParagraph 的開始或者大於或等於 newParagraph 的結束
NullPointerException - 如果 newParagraphnull

deleteChar

public void deleteChar(AttributedCharacterIterator newParagraph,
                       int deletePos)
從當前由此 TextMeasurer 表示的段落中刪除一個字元後,更新 TextMeasurer。在此調用後,該 TextMeasurer 等效於從文本創建的新 TextMeasurer;不過,更新現有 TextMeasurer 通常比重新創建一個新 TextMeasurer 效率更高。

參數:
newParagraph - 執行刪除後的段落文本。不能為 null。
deletePos - 所移除字元在文本中的位置。不能小於 newParagraph 的開始,而且不能大於 newParagraph 的結束。
拋出:
IndexOutOfBoundsException - 如果 deletePos 小於 newParagraph 的開始或大於 newParagraph 的結束
NullPointerException - 如果 newParagraphnull

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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