JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 GlyphView

java.lang.Object
  繼承者 javax.swing.text.View
      繼承者 javax.swing.text.GlyphView
所有已實作的介面:
Cloneable, SwingConstants, TabableView
直接已知子類別:
LabelView

public class GlyphView
extends View
implements TabableView, Cloneable

GlyphView 是一個樣式化文本存儲塊,它表示在文本模型中的元素上映射的視圖。此視圖通常負責以某種方式使用字元級別屬性顯示文本字形。GlyphPainter 類別的實作用於進行實際呈現和模型/視圖轉換。此操作分別呈現與該模型關聯的佈局和管理。

該視圖支持為了格式化而進行的分解。通過分解產生的片段共享對元素負主要負責的視圖(即它們是巢狀的類別,只有其自身少量的狀態),因此它們可以共享其資源。

因為此視圖表示可以有嵌入其中的選項卡的文本,所以可實作 TabableView 介面。只有此視圖嵌入進行選項卡擴展的容器時,才擴展選項卡。ParagraphView 是一個套件含進行選項卡擴展的容器的範例。

從以下版本開始:
1.3

巢狀類別摘要
static class GlyphView.GlyphPainter
          執行字形呈現的類別。
 
欄位摘要
 
從類別 javax.swing.text.View 繼承的欄位
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
 
從介面 javax.swing.SwingConstants 繼承的欄位
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
建構子摘要
GlyphView(Element elem)
          建構在元素上包裹的新視圖。
 
方法摘要
 View breakView(int axis, int p0, float pos, float len)
          在給定的軸上以給定的長度拆分此視圖。
 void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
          發出通知,通知文檔此視圖負責的位置處的屬性已更改。
protected  void checkPainter()
          檢查是否存在字形 painter。
protected  Object clone()
          創建一個淺表複製。
 View createFragment(int p0, int p1)
          創建表示元素某部分的視圖。
 float getAlignment(int axis)
          確定此視圖沿某個軸所需的對齊方式。
 Color getBackground()
          獲取用於呈現字形的背景色。
 int getBreakWeight(int axis, float pos, float len)
          確定此視圖拆分幾率有多大。
 int getEndOffset()
          獲取此視圖負責的一部分模型。
 Font getFont()
          獲取字形應該以其為依據的字體。
 Color getForeground()
          獲取用於呈現字形的前景色。
 GlyphView.GlyphPainter getGlyphPainter()
          獲取當前安裝的字形 painter。
 int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          提供一種方法來確定下一個以可視化形式表示的模型位置,使用者可以在此位置放置一個插入符。
 float getPartialSpan(int p0, int p1)
          確定沿與選項卡擴展同軸的區域是否為該視圖的一部分。
 float getPreferredSpan(int axis)
          確定此視圖沿某個軸的首選區域。
 int getStartOffset()
          獲取此視圖負責的一部分模型。
 float getTabbedSpan(float x, TabExpander e)
          確定使用給定選項卡擴展實作時所需的區域。
 TabExpander getTabExpander()
          如果此視圖中存在選項卡,則獲取要使用的 TabExpander。
 Segment getText(int p0, int p1)
          獲取對佔用給定範圍的文本的參考。
 void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
          發出通知,通知文檔中此視圖負責的位置已插入內容。
 boolean isStrikeThrough()
          確定字形是否應該有刪除線。
 boolean isSubscript()
          確定字形是否應該呈現為上標。
 boolean isSuperscript()
          確定字形是否應該呈現為下標。
 boolean isUnderline()
          確定字形是否應加下劃線。
 Shape modelToView(int pos, Shape a, Position.Bias b)
          提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。
 void paint(Graphics g, Shape a)
          呈現一部分運行的文本樣式。
 void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
          發出通知,通知文檔中此視圖負責的位置已移除內容。
 void setGlyphPainter(GlyphView.GlyphPainter p)
          設置用於呈現字形的 painter。
 int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
          提供從視圖坐標空間到模型邏輯坐標空間的映射。
 
從類別 javax.swing.text.View 繼承的方法
append, forwardUpdate, forwardUpdateToView, getAttributes, getChildAllocation, getContainer, getDocument, getElement, getGraphics, getMaximumSpan, getMinimumSpan, getParent, getResizeWeight, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, isVisible, modelToView, modelToView, preferenceChanged, remove, removeAll, replace, setParent, setSize, updateChildren, updateLayout, viewToModel
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

GlyphView

public GlyphView(Element elem)
建構在元素上包裹的新視圖。

參數:
elem - 元素
方法詳細資訊

clone

protected final Object clone()
創建一個淺表複製。這由 createFragment 和 breakView 方法使用。

覆寫:
類別 Object 中的 clone
返回:
複製
另請參見:
Cloneable

getGlyphPainter

public GlyphView.GlyphPainter getGlyphPainter()
獲取當前安裝的字形 painter。如果尚未安裝 painter,且尚不需要預設,則返回 null。


setGlyphPainter

public void setGlyphPainter(GlyphView.GlyphPainter p)
設置用於呈現字形的 painter。


getText

public Segment getText(int p0,
                       int p1)
獲取對佔用給定範圍的文本的參考。這通常由 GlyphPainter 使用,以確定它應該呈現哪些字元的字形。

參數:
p0 - 起始文檔偏移量,該值 >= 0
p1 - 結束文檔偏移量,該值 >= p0
返回:
包含文本的 Segment

getBackground

public Color getBackground()
獲取用於呈現字形的背景色。如果不存在背景色,則應該返回 null。如果相關文檔是樣式化文檔,則實作此方法以調用 StyledDocument.getBackground,否則返回 null。


getForeground

public Color getForeground()
獲取用於呈現字形的前景色。如果沒有前景色,則應返回 null。如果相關文檔是一個 StyledDocument,則實作此方法可調用 StyledDocument.getBackground。如果相關文檔不是一個 StyledDocument,則使用相關元件的前景色。如果沒有相關元件,則返回 null。


getFont

public Font getFont()
獲取字形應該以其為依據的字體。如果相關文檔是一個 StyledDocument,則實作此方法可調用 StyledDocument.getFont。如果相關文檔不是一個 StyledDocument,則使用相關元件的字體。如果沒有相關元件,則返回 null。


isUnderline

public boolean isUnderline()
確定字形是否應加下劃線。如果為 true,則應通過基線繪製下劃線。


isStrikeThrough

public boolean isStrikeThrough()
確定字形是否應該有刪除線。如果為 true,則應穿過字形中心劃一條線。


isSubscript

public boolean isSubscript()
確定字形是否應該呈現為上標。


isSuperscript

public boolean isSuperscript()
確定字形是否應該呈現為下標。


getTabExpander

public TabExpander getTabExpander()
如果此視圖中存在選項卡,則獲取要使用的 TabExpander。


checkPainter

protected void checkPainter()
檢查是否存在字形 painter。如果不存在 painter,則安裝預設的字形 painter。


getTabbedSpan

public float getTabbedSpan(float x,
                           TabExpander e)
確定使用給定選項卡擴展實作時所需的區域。

指定者:
介面 TabableView 中的 getTabbedSpan
參數:
x - 為進行選項卡擴展該視圖所在的位置,該位置 >= 0。
e - 遇到選項卡時對其進行擴展的方法。
返回:
所需的區域,該區域 >= 0
另請參見:
TabableView.getTabbedSpan(float, javax.swing.text.TabExpander)

getPartialSpan

public float getPartialSpan(int p0,
                            int p1)
確定沿與選項卡擴展同軸的區域是否為該視圖的一部分。這專門由 TabExpander 使用,用於選項卡擴展涉及的相對於 tab stop 來說沒有空白的文本部分對齊的情況。因此,可假定給定的範圍不包含選項卡。

使用 getTabbedSpan 或 getPreferredSize 時可以調用此方法。它必須安排自己的文本緩衝區來進行測量。

指定者:
介面 TabableView 中的 getPartialSpan
參數:
p0 - 起始文檔偏移量,該偏移量 >= 0
p1 - 結束文檔偏移量,該偏移量 >= p0
返回:
區域,該區域 >= 0

getStartOffset

public int getStartOffset()
獲取此視圖負責的一部分模型。

覆寫:
類別 View 中的 getStartOffset
返回:
模型中的起始偏移量
另請參見:
View.getStartOffset()

getEndOffset

public int getEndOffset()
獲取此視圖負責的一部分模型。

覆寫:
類別 View 中的 getEndOffset
返回:
模型中的結束偏移量
另請參見:
View.getEndOffset()

paint

public void paint(Graphics g,
                  Shape a)
呈現一部分運行的文本樣式。

指定者:
類別 View 中的 paint
參數:
g - 要使用的呈現表面
a - 已分派的呈現區域

getPreferredSpan

public float getPreferredSpan(int axis)
確定此視圖沿某個軸的首選區域。

指定者:
類別 View 中的 getPreferredSpan
參數:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
視圖可能要在其中呈現的區域,該區域 >= 0。通常會告知該視圖在返回的區域中呈現,但不保證一定如此。父級可選擇重新調整視圖大小或拆分視圖。
另請參見:
View.getPreferredSpan(int)

getAlignment

public float getAlignment(int axis)
確定此視圖沿某個軸所需的對齊方式。對於標籤,該對齊方式是讓字體基線沿 y 軸對齊,而父級類別是沿 x 軸對齊方式。

覆寫:
類別 View 中的 getAlignment
參數:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
需要的對齊方式。這應是 0.0 和 1.0 之間的值,其中 0.0 指示原點對齊,1.0 指示原點以外的整個區域對齊。0.5 對齊方式指視圖的中心。

modelToView

public Shape modelToView(int pos,
                         Shape a,
                         Position.Bias b)
                  throws BadLocationException
提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。

指定者:
類別 View 中的 modelToView
參數:
pos - 要轉換的位置,該位置 >= 0
a - 要呈現的分派區域
b - 可以是 Position.Bias.Forward,也可以是 Position.Bias.Backward
返回:
給定位置的邊界框
拋出:
BadLocationException - 如果給定位置不表示相關文檔中的有效位置
另請參見:
View.modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

viewToModel

public int viewToModel(float x,
                       float y,
                       Shape a,
                       Position.Bias[] biasReturn)
提供從視圖坐標空間到模型邏輯坐標空間的映射。

指定者:
類別 View 中的 viewToModel
參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
a - 要在其中呈現的分派區域
biasReturn - 將 Position.Bias.ForwardPosition.Bias.Backward 作為此陣列中的第零個元素返回
返回:
模型中最能表示視圖給定點的位置,該位置 >= 0
另請參見:
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

getBreakWeight

public int getBreakWeight(int axis,
                          float pos,
                          float len)
確定此視圖拆分幾率有多大。這可用於確定在格式化進程中最有可能調用 breakView 的視圖。權重越高,拆分的可能性越大。如果值等於或小於 View.BadBreakWeight,則不應考慮拆分。值大於或等於 View.ForcedBreakWeight 時應該拆分視圖。

實作此方法以轉發到 Y_AXIS 的父級類別。沿 X_AXIS 可以返回以下值。

View.ExcellentBreakWeight
如果有空白佔據著所需的拆分位置。
View.BadBreakWeight
如果所需的拆分位置導致了拆分位置的起始偏移量。
View.GoodBreakWeight
如果不出現其他情況。
如果能夠找到空白位置,則通常會導致在空白位置處的拆分行為,否則會在字元之間拆分。

覆寫:
類別 View 中的 getBreakWeight
參數:
axis - 可以是 View.X_AXIS,也可以是 View.Y_AXIS
pos - 已拆分視圖的潛在起始位置,該位置 >= 0。這可能對計算選項卡的位置有用。
len - 指定到所需的潛在拆分處 pos 的相對長度,該長度 >= 0。
返回:
View.ForcedBreakWeight 和 View.BadBreakWeight 之間的一個權重值
另請參見:
LabelView, ParagraphView, View.BadBreakWeight, View.GoodBreakWeight, View.ExcellentBreakWeight, View.ForcedBreakWeight

breakView

public View breakView(int axis,
                      int p0,
                      float pos,
                      float len)
在給定的軸上以給定的長度拆分此視圖。實作此方法,以便嘗試在空白位置處拆分,並在結束處返回一個帶有空白的片段。如果找不到空白位置,則使用最靠近的字元。

覆寫:
類別 View 中的 breakView
參數:
axis - 可以是 View.X_AXIS,也可以是 View.Y_AXIS
p0 - 模型中片段應該開始其表示形式的位置,該位置 >= 0。
pos - 沿已拆分視圖可能佔用的軸的位置,該位置 >= 0。這可能對諸如選項卡計算一類別的情況很有用。
len - 指定的沿需要潛在拆分的軸的距離,該距離 >= 0。
返回:
如果視圖可以拆分,則返回表示給定區域的視圖片段。如果視圖不支持拆分行為,則返回視圖自身。
另請參見:
View.breakView(int, int, float, float)

createFragment

public View createFragment(int p0,
                           int p1)
創建表示元素某部分的視圖。此方法可能在測量視圖片段的格式化操作期間有用。如果視圖不支持分段(預設),則返回其自身。

此視圖確實支持分段。實作此方法以返回一個巢狀類別,該類別共享在此視圖中只表示該視圖的某一部分的狀態。

覆寫:
類別 View 中的 createFragment
參數:
p0 - 起始偏移量,該偏移量 >= 0。此值應該大於或等於元素起始偏移量且小於元素結束偏移量。
p1 - 結束偏移量,該偏移量 > p0。這應該是一個小於或等於元素結束偏移量且大於元素起始偏移量的值。
返回:
視圖片段,如果視圖不支持片段拆分,則返回其自身
另請參見:
LabelView

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos,
                                     Position.Bias b,
                                     Shape a,
                                     int direction,
                                     Position.Bias[] biasRet)
                              throws BadLocationException
提供一種方法來確定下一個以可視化形式表示的模型位置,使用者可以在此位置放置一個插入符。有些視圖可能不可見,它們可能與該模型中發現的順序不同,或它們可能只是不允許存取該模型中的某些位置。

覆寫:
類別 View 中的 getNextVisualPositionFrom
參數:
pos - 要轉換的位置,該位置 >= 0
a - 要呈現的分派區域
direction - 相對當前位置的方向,可視為通常在鍵盤上看到的箭頭鍵方向。此方向可以是 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH 或 SwingConstants.SOUTH。
返回:
模型中最能表示下一個可視位置的位置。
拋出:
BadLocationException
IllegalArgumentException - 如果方向無效

insertUpdate

public void insertUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory f)
發出通知,通知文檔中此視圖負責的位置已插入內容。實作此方法,以便沿呈現字形的軸調用 preferenceChanged。

覆寫:
類別 View 中的 insertUpdate
參數:
e - 來自相關文檔的更改資訊
a - 視圖的當前分派區域
f - 用於重建的處理器(如果該視圖有子級)
另請參見:
View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory f)
發出通知,通知文檔中此視圖負責的位置已移除內容。實作此方法,以便沿呈現字形的軸調用 preferenceChanged。

覆寫:
類別 View 中的 removeUpdate
參數:
e - 來自相關文檔的更改資訊
a - 視圖的當前分派區域
f - 用於重建的處理器(如果該視圖有子級)
另請參見:
View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

changedUpdate

public void changedUpdate(DocumentEvent e,
                          Shape a,
                          ViewFactory f)
發出通知,通知文檔此視圖負責的位置處的屬性已更改。實作此方法,以便沿水平軸和垂直軸調用 preferenceChanged。

覆寫:
類別 View 中的 changedUpdate
參數:
e - 來自相關文檔的更改資訊
a - 視圖的當前分派區域
f - 用於重建的處理器(如果該視圖有子級)
另請參見:
View.changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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