- java.lang.Object
-
- javax.swing.text.View
-
- javax.swing.text.GlyphView
-
- All Implemented Interfaces:
-
Cloneable
,SwingConstants
,TabableView
- 已知直接子类:
-
LabelView
public class GlyphView extends View implements TabableView, Cloneable
GlyphView是一种风格的文本块,表示在文本模型中映射到元素上的视图。 该视图通常负责以某种方式显示使用字符级属性的文本字形。 GlyphPainter类的一个实现用于实际渲染和模型/视图转换。 这将渲染与模型的关联的布局和管理分开。该视图支持打破格式化的目的。 通过破解产生的碎片分享了对元素负主要责任的观点(即它们是嵌套类,只携带少量自己的状态),以便它们可以共享其资源。
由于此视图表示可能嵌入其中的选项卡的文本,它实现了
TabableView
接口。 如果此视图嵌入到执行制表符扩展的容器中,则只能扩展标签。 ParagraphView是一个允许标签扩展的容器的示例。- 从以下版本开始:
- 1.3
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
GlyphView.GlyphPainter
一个执行字形渲染的类。
-
Field Summary
-
Fields inherited from interface 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
-
Fields inherited from class javax.swing.text.View
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 View
breakView(int axis, int p0, float pos, float len)
以给定长度在给定轴上打破此视图。void
changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
在该视图负责的位置向文档发出属性更改的通知。protected void
checkPainter()
检查是否存在字形画家。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()
获取当前安装的字形画家。float
getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。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)
设置用于渲染字形的画家。int
viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
提供从视图坐标空间到模型的逻辑坐标空间的映射。-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class javax.swing.text.View
append, forwardUpdate, forwardUpdateToView, getAttributes, getChildAllocation, getContainer, getDocument, getElement, getGraphics, getMaximumSpan, getParent, getResizeWeight, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, isVisible, modelToView, modelToView, preferenceChanged, remove, removeAll, replace, setParent, setSize, updateChildren, updateLayout, viewToModel
-
-
-
-
构造方法详细信息
-
GlyphView
public GlyphView(Element elem)
构造一个包含在元素上的新视图。- 参数
-
elem
- 元素
-
-
方法详细信息
-
clone
protected final Object clone()
创建一个浅的副本。 这是由createFragment和breakView方法使用的。
-
getGlyphPainter
public GlyphView.GlyphPainter getGlyphPainter()
获取当前安装的字形画家。 如果还没有安装画家,并且还没有需要默认画面,则返回null。- 结果
- 当前安装的字形画家
-
setGlyphPainter
public void setGlyphPainter(GlyphView.GlyphPainter p)
设置用于渲染字形的画家。- 参数
-
p
- 用于渲染字形的画家
-
getText
public Segment getText(int p0, int p1)
获取对占用给定范围的文本的引用。 这通常由GlyphPainter用来确定应该为其显示字符的字符。- 参数
-
p0
- 起始文档offset> = 0 -
p1
- 结束文件offset> = 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()
确定字形是否应加下划线。 如果为真,则应通过基线绘制下划线。- 结果
- 如果字形应该加下划线
-
isStrikeThrough
public boolean isStrikeThrough()
确定字形是否应该有删除线。 如果为真,则应通过字形的中心绘制一条线。- 结果
- 如果字形应该有删除线
-
isSubscript
public boolean isSubscript()
确定字形是否应呈现为上标。- 结果
- 如果字形应该被渲染为上标
-
isSuperscript
public boolean isSuperscript()
确定字形是否应呈现为下标。- 结果
- 如果字形应该被渲染为下标
-
getTabExpander
public TabExpander getTabExpander()
如果此视图中存在选项卡,则获取TabExpander。- 结果
- 如果此视图中存在选项卡,则使用TabExpander
-
checkPainter
protected void checkPainter()
检查是否存在字形画家。 如果画家不存在,将会安装默认的字形画家。
-
getTabbedSpan
public float getTabbedSpan(float x, TabExpander e)
确定使用给定的选项卡扩展实现时所需的跨度。- Specified by:
-
getTabbedSpan
在接口TabableView
- 参数
-
x
- 视图将位于的位置,用于标签扩展> = 0的目的。 -
e
- 遇到时如何展开标签。 - 结果
- 期望的跨度> = 0
- 另请参见:
-
TabableView.getTabbedSpan(float, javax.swing.text.TabExpander)
-
getPartialSpan
public float getPartialSpan(int p0, int p1)
确定视图的一部分沿与标签扩展相同的轴的跨度。 这是打算供TabExpander使用的情况下,该选项卡扩展涉及到相对于该选项卡停止没有空白部分的文本。 因此,假设给定的范围不包含选项卡。在为getTabbedSpan或getPreferredSize服务时可以调用此方法。 它必须安排自己的文本缓冲区进行测量。
- Specified by:
-
getPartialSpan
在接口TabableView
- 参数
-
p0
- 起始文档offset> = 0 -
p1
- 结束文件offset> = p0 - 结果
- span> = 0
-
getStartOffset
public int getStartOffset()
获取该视图负责的模型部分。- 重写:
-
getStartOffset
在View
- 结果
- 起始偏移到模型中
- 另请参见:
-
View.getStartOffset()
-
getEndOffset
public int getEndOffset()
获取该视图负责的模型部分。- 重写:
-
getEndOffset
在View
- 结果
- 结束偏移到模型中
- 另请参见:
-
View.getEndOffset()
-
getMinimumSpan
public float getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。此实现将视图中最长的不可破坏区域作为
View.X_AXIS
的最小跨度View.X_AXIS
。- 重写:
-
getMinimumSpan
在View
- 参数
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 结果
- 视图可以呈现的最小跨度
- 异常
-
IllegalArgumentException
- 如果axis
参数无效 - 另请参见:
-
View.getMinimumSpan(int)
-
getPreferredSpan
public float getPreferredSpan(int axis)
确定沿着轴的此视图的首选跨度。- Specified by:
-
getPreferredSpan
在View
- 参数
-
axis
- 可以是View.X_AXIS或View.Y_AXIS - 结果
- 视图想要呈现为> = 0的跨度。通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
- 另请参见:
-
View.getPreferredSpan(int)
-
getAlignment
public float getAlignment(int axis)
确定沿着轴的该视图的所需对准。 对于标签,对齐方向是沿着y轴的字体基线,并且超类在x轴上对齐。- 重写:
-
getAlignment
在View
- 参数
-
axis
- 可以是View.X_AXIS或View.Y_AXIS - 结果
- 所需的对齐。 这应该是0.0和1.0之间的值,其中0表示原点对齐,1.0表示与原点的全跨距对齐。 0.5的对齐将是视图的中心。
-
modelToView
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
提供从文档模型坐标空间映射到映射到它的视图的坐标空间的映射。- Specified by:
-
modelToView
在View
- 参数
-
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)
提供从视图坐标空间到模型的逻辑坐标空间的映射。- Specified by:
-
viewToModel
在View
- 参数
-
x
- X坐标> = 0 -
y
- Y坐标> = 0 -
a
- 要分配的区域 -
biasReturn
-Position.Bias.Forward
或Position.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
- 如果其他条件不发生。
- 重写:
-
getBreakWeight
在View
- 参数
-
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)
以给定长度在给定轴上打破此视图。 这是为了尝试在空白位置打破,并返回一个带有空格的片段。 如果找不到空白位置,则使用最近的字符。- 重写:
-
breakView
在View
- 参数
-
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)
创建一个表示元素的一部分的视图。 这在格式化操作中可以用于测量视图的片段。 如果视图不支持分片(默认),它将返回自身。这个视图确实支持碎片化。 它被实现为返回在该视图中共享状态的嵌套类,仅表示视图的一部分。
- 重写:
-
createFragment
在View
- 参数
-
p0
- 起始偏移量> = 0。这应该是大于或等于元素起始偏移值并小于元素结束偏移量的值。 -
p1
- 结束偏移> p0。 这应该是小于或等于元素结束偏移量的值,并且大于元素起始偏移量。 - 结果
- 视图片段或本身,如果视图不支持打破碎片
- 另请参见:
-
LabelView
-
getNextVisualPositionFrom
public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
提供一种方法来确定可能放置插入符号的下一个视觉表示的模型位置。 某些视图可能不可见,它们可能与模型中找不到相同的顺序,也可能不允许访问模型中的某些位置。 该方法可以指定在> = 0范围内转换的位置。 如果值为-1,则会自动计算一个位置。 如果值<-1,则会抛出BadLocationException
。- 重写:
-
getNextVisualPositionFrom
在View
- 参数
-
pos
- 转换的位置 -
a
- 要分配的区域 -
direction
- 从当前位置的方向,可以被认为是通常在键盘上找到的箭头键。 这可能是SwingConstants.WEST,SwingConstants.EAST,SwingConstants.NORTH或SwingConstants.SOUTH。 -
b
- 偏见 -
biasRet
- 返回的偏差 - 结果
- 模型中最能代表下一个位置视觉位置的位置。
- 异常
-
BadLocationException
- 给定的位置不是文档中的有效位置 -
IllegalArgumentException
- 无效方向
-
insertUpdate
public void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
在该视图负责的位置发出通知。 这被实现为沿着轴呈现glyphs的preferenceChanged。- 重写:
-
insertUpdate
在View
- 参数
-
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)
在该视图负责的位置发出文档中已删除某些内容的通知。 这被实现为沿着轴呈现glyphs的preferenceChanged。- 重写:
-
removeUpdate
在View
- 参数
-
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。- 重写:
-
changedUpdate
在View
- 参数
-
e
- 相关文档的更改信息 -
a
- 视图的当前分配 -
f
- 如果视图有孩子,工厂要重建 - 另请参见:
-
View.changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
-