JavaTM 2 Platform
Standard Ed. 5.0

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 - 已分配的呈现区域
另请参见:
View.paint(java.awt.Graphics, java.awt.Shape)

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. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策