繼承關係
java.awt.font類TextMeasurer
java.lang.Object
java.awt.font.TextMeasurer
所有已實現的接口
Cloneablepublic final class TextMeasurerextends Objectimplements Cloneable
TextMeasurer 類提供換行所需的基本操作:測量到給定的 advance,確定字元範圍的 advance,並為字元範圍生成一個 TextLayout。該類還提供了段落增量編輯的方法。
TextMeasurer 對象是使用表示單個文本段落的 AttributedCharacterIterator 構造的。AttributedCharacterIterator 的 getBeginIndex 方法返回的值定義了第一個字元的絕對索引。AttributedCharacterIterator 的 getEndIndex 方法返回的值定義了最後一個字元後的索引。這些值定義了調用 TextMeasurer 的時使用的索引範圍。例如,要通過調用獲取文本範圍的 advance 或文本範圍的換行,則必須使用開始索引值和結束索引值之間的索引。調用 insertChar 和 deleteChar 重置 TextMeasurer 要使用在這些調用中傳入的 AttributedCharacterIterator 的開始索引和結束索引。
大多數客戶端將使用更方便的 LineBreakMeasurer,它實現了標準的換行策略(在每一行上放置儘可能多的適合的單詞)。
從以下版本開始:
1.3
另請參見
LineBreakMeasurer
構造方法摘要
TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
從源文本構造 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 Objectclone()從類 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 的字元的行的圖形寬度。start 和 limit 是絕對索引,不是相對於段落開始處的相對索引。 參數:start - 開始測量的字元索引 limit - 停止測量的字元索引 返回:從 start 處開始並包括一直到 limit 的字元的行的圖形寬度 拋出:IndexOutOfBoundsException - 如果 limit 小於 startIllegalArgumentException - 如果 start 或 limit 不在段落開始處和段落結束處之間。
getLayout
public TextLayoutgetLayout(int start, int limit)返回給定字元範圍上的 TextLayout。 參數:start - 第一個字元的索引 limit - 最後一個字元之後的索引。必須大於 start返回:從 start 開始(不包括)直到 limit 的字元的 TextLayout拋出:IndexOutOfBoundsException - 如果 limit 小於 startIllegalArgumentException - 如果 start 或 limit 不在段落開始處和段落結束處之間。
insertChar
public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)在將單個字元插入當前由此 TextMeasurer 表示的段落中後,更新該 TextMeasurer。在此調用後,該 TextMeasurer 等效於從文本創建的新 TextMeasurer;不過,更新現有 TextMeasurer 通常比重新創建一個新 TextMeasurer 效率更高。 參數:newParagraph - 執行插入後段落的文本。不能為 null。 insertPos - 插入字元在文本中的位置。不能小於 newParagraph 的開始,且必須小於 newParagraph 的結束。 拋出:IndexOutOfBoundsException - 如果 insertPos 小於 newParagraph 的開始或者大於或等於 newParagraph 的結束 NullPointerException - 如果 newParagraph 為 null
deleteChar
public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)從當前由此 TextMeasurer 表示的段落中刪除一個字元後,更新 TextMeasurer。在此調用後,該 TextMeasurer 等效於從文本創建的新 TextMeasurer;不過,更新現有 TextMeasurer 通常比重新創建一個新 TextMeasurer 效率更高。參數:newParagraph - 執行刪除後的段落文本。不能為 null。 deletePos - 所移除字元在文本中的位置。不能小於 newParagraph 的開始,而且不能大於 newParagraph 的結束。 拋出:IndexOutOfBoundsException - 如果 deletePos 小於 newParagraph 的開始或大於 newParagraph 的結束 NullPointerException - 如果 newParagraph 為 null
