- java.lang.Object
-
- javax.swing.text.View
-
- 实现的所有接口
-
SwingConstants
- 已知直接子类:
-
AsyncBoxView
,ComponentView
,CompositeView
,GlyphView
,IconView
,ImageView
,PlainView
public abstract class View extends Object implements SwingConstants
文本包的一个非常重要的部分是
View
类。 顾名思义,它代表了文本模型或文本模型的一部分。 正是这个类负责文本组件的外观。 视图并不是一个必须学习的全新事物,而是非常像一个轻量级组件。默认情况下,视图非常轻。 它包含对父视图的引用,它可以在不保持状态的情况下从中获取许多内容,并且它包含对模型的一部分的引用(
Element
)。 视图不必精确表示模型中的元素,这只是一个典型且因此方便的映射。 视图可以替代地维护一些Position对象以维持其在模型中的位置(即,表示元素的片段)。 这通常是格式化视图分解为碎片的结果。 与元素实质关系的便利性使得构建工厂以生成视图变得更加容易,并且在模型更改时更容易跟踪视图片段,并且必须更改视图以反映模型。 因此,简单视图直接表示元素,而复杂视图则不表示。视图具有以下职责:
- 参与布局。
-
该视图具有
setSize
方法,其类似于doLayout
和setSize
中的Component
。 该视图具有preferenceChanged
方法,类似于invalidate
中的Component
除了可以使一个轴无效并且识别请求更改的子项。视图以三个值(最小,最优和最大跨度)表示它希望的大小。 视图中的布局可以在每个轴上独立完成。 对于功能正常的View实现,最小跨度<=首选跨度,而<=最大跨度。
布局的最小方法集是:
应该准备多次调用
setSize
方法(即,即使大小没有改变也可以调用它)。 通常调用setSize
方法以确保在尝试对其执行需要最新布局的操作之前完成View布局。 应始终将视图的大小设置为该视图指定的最小和最大范围内的值。 此外,如果视图已更改其所需布局的值,则视图必须始终在父preferenceChanged
上调用preferenceChanged
方法,并期望父级符合。 在发送preferenceChanged
之前,父视图不需要识别更改。 这允许父View实现在需要时缓存子需求。 调用序列如下所示:确切的调用顺序取决于父视图的布局功能(如果视图有任何子视图)。 该视图可以在确定将给每个孩子提供什么之前收集孩子的偏好,或者可以一次一个地迭代地更新孩子。
- 渲染模型的一部分。
-
这是在paint方法中完成的,这非常类似于组件绘制方法。 预计视图可能会填充相当大的树。
View
具有以下用于呈现的语义:- 视图在绘制时从父级获取其分配,因此如果分配的区域与准备处理的区域不同,则必须准备重做布局。
- 坐标系是相同的托管
Component
(即Component
由返回getContainer
方法)。 这意味着除非父级显式更改了坐标系,否则子视图与父视图位于同一坐标系中。 要安排自己重新绘制视图,可以在主机Component
上调用重绘。 - 默认设置是不剪辑子项。 仅当视图真正感觉需要剪切时才允许视图剪辑更有效。
- 给出的
Graphics
对象未以任何方式初始化。 视图应设置所需的任何设置。 -
View
本质上是透明的。 虽然视图可以呈现为其整个分配,但通常视图不会。 通过遍历View
实现的树来执行渲染。 每个View
负责渲染其子项。 这种行为取决于线程安全性。 虽然视图实现不一定必须在考虑线程安全的情况下实现,但是其他利用并发的视图实现可以依赖于树遍历来保证线程安全。 - 相对于模型的视图顺序取决于实现。 尽管子视图通常将以与它们在模型中出现的顺序相同的顺序排列,但是它们可以以完全不同的顺序在视觉上排列。 如果子项重叠,则视图实现可能具有与它们关联的Z-Order。
渲染方法是:
- 在模型和视图坐标系之间进行转换。
-
因为视图对象是从工厂生成的,因此不一定要指望处于特定模式,所以必须能够执行转换以正确地定位模型的空间表示。 这样做的方法是:
在尝试进行翻译之前,布局必须有效。 翻译无效,并且在通过
DocumentEvent
从模型广播更改时不得尝试DocumentEvent
。 - 响应模型的变化。
-
如果整个视图由多个部分表示(如果想要能够更改视图并写入最少量的新代码,这是最好的情况),拥有大量的
DocumentListener
是不切实际的。 如果每个视图都听取了模型,那么只有少数人真正对任何给定时间广播的变化感兴趣。 由于模型不了解视图,因此无法过滤变更信息的广播。 视图层次结构本身负责传播更改信息。 在视图层次结构的任何级别,该视图都足够了解其子级,以便进一步分发更改信息。 因此,从视图层次结构的根开始广播更改。 这样做的方法是:
-
-
字段汇总
字段 变量和类型 字段 描述 static int
BadBreakWeight
用于指示视图的权重是用于格式化的不良中断机会。static int
ExcellentBreakWeight
表示视图的重量支持破坏,这代表了一个非常有吸引力的破解之处。static int
ForcedBreakWeight
指示视图的权重支持中断,并且必须打破以在放置在通过断开它们来格式化其子项的视图中时正确表示。static int
GoodBreakWeight
表示视图的权重支持破坏,但可能存在更好的机会。static int
X_AXIS
用于格式化/中断操作的轴。static int
Y_AXIS
用于格式化/中断操作的轴。-
Fields declared in 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
-
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 弃用的方法 变量和类型 方法 描述 void
append(View v)
附加单个子视图。View
breakView(int axis, int offset, float pos, float len)
试图在给定轴上打破此视图。void
changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
从文档中发出通知,告知该视图负责的位置中的属性已更改。View
createFragment(int p0, int p1)
创建表示元素一部分的视图。protected void
forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
将给定的DocumentEvent
转发到需要通知模型更改的子视图。protected void
forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
将DocumentEvent
转发到给DocumentEvent
视图。float
getAlignment(int axis)
确定此视图沿轴的所需对齐方式。AttributeSet
getAttributes()
获取渲染时要使用的属性。int
getBreakWeight(int axis, float pos, float len)
确定此视图中休息机会的吸引力。Shape
getChildAllocation(int index, Shape a)
获取给定子视图的分配。Container
getContainer()
获取托管视图的容器。Document
getDocument()
获取与视图关联的模型。Element
getElement()
获取此视图映射到的主题的结构部分。int
getEndOffset()
获取此视图负责的模型部分。Graphics
getGraphics()
获取Graphics
进行渲染。float
getMaximumSpan(int axis)
确定此视图沿轴的最大跨度。float
getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。int
getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
提供一种方法来确定可能放置插入符的下一个可视化表示的模型位置。View
getParent()
返回视图的父级。abstract float
getPreferredSpan(int axis)
确定此视图沿轴的首选跨度。int
getResizeWeight(int axis)
确定沿给定轴的视图的可调整性。int
getStartOffset()
获取此视图负责的模型部分。String
getToolTipText(float x, float y, Shape allocation)
返回指定位置的工具提示文本。View
getView(int n)
获取第 n个子视图。int
getViewCount()
返回此视图中的视图数。ViewFactory
getViewFactory()
获取正在为视图层次结构提供信息的ViewFactory
实现。int
getViewIndex(float x, float y, Shape allocation)
返回表示视图中给定位置的子视图索引。int
getViewIndex(int pos, Position.Bias b)
返回表示模型中给定位置的子视图索引。void
insert(int offs, View v)
插入单个子视图。void
insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
通知在该视图负责的位置将某些内容插入到文档中。boolean
isVisible()
返回一个布尔值,指示视图是否可见。Shape
modelToView(int pos, Shape a)
已过时。abstract Shape
modelToView(int pos, Shape a, Position.Bias b)
为给定字符提供从文档模型坐标空间到视图坐标空间的映射。Shape
modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
为给定区域提供从文档模型坐标空间到视图坐标空间的映射。abstract void
paint(Graphics g, Shape allocation)
使用给定的渲染表面和该表面上的区域进行渲染。void
preferenceChanged(View child, boolean width, boolean height)
子视图可以在父视图上调用此视图以指示首选项已更改,应重新考虑布局。void
remove(int i)
移除给定位置的一个孩子。void
removeAll()
删除所有孩子。void
removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
通知在该视图负责的位置从文档中删除了某些内容。void
replace(int offset, int length, View[] views)
替换子视图。void
setParent(View parent)
建立此视图的父视图。void
setSize(float width, float height)
设置视图的大小。protected boolean
updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
更新子视图以响应接收模型更改的通知,并且此视图负责的元素有更改记录。protected void
updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
更新布局以响应从模型接收更改通知。int
viewToModel(float x, float y, Shape a)
已过时。abstract int
viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
提供从视图坐标空间到模型的逻辑坐标空间的映射。
-
-
-
字段详细信息
-
BadBreakWeight
public static final int BadBreakWeight
用于指示视图的权重是用于格式化的不良中断机会。 此值表示不会尝试将视图分解为片段,因为尚未编写视图以支持片段化。
-
GoodBreakWeight
public static final int GoodBreakWeight
表示视图的权重支持破坏,但可能存在更好的机会。
-
ExcellentBreakWeight
public static final int ExcellentBreakWeight
表示视图的重量支持破坏,这代表了一个非常有吸引力的破解之处。
-
ForcedBreakWeight
public static final int ForcedBreakWeight
指示视图的权重支持中断,并且必须打破以在放置在通过断开它们来格式化其子项的视图中时正确表示。
-
X_AXIS
public static final int X_AXIS
用于格式化/中断操作的轴。- 另请参见:
- 常数字段值
-
Y_AXIS
public static final int Y_AXIS
用于格式化/中断操作的轴。- 另请参见:
- 常数字段值
-
-
构造方法详细信息
-
View
public View(Element elem)
创建一个新的View
对象。- 参数
-
elem
- 代表Element
-
-
方法详细信息
-
getParent
public View getParent()
返回视图的父级。- 结果
-
父级,如果不存在,
null
-
isVisible
public boolean isVisible()
返回一个布尔值,指示视图是否可见。 默认情况下,所有视图都可见。- 结果
- 总是返回true
-
getPreferredSpan
public abstract float getPreferredSpan(int axis)
确定此视图沿轴的首选跨度。- 参数
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
- 结果
- 视图想要渲染的范围。 通常情况下,视图会被告知渲染到返回的范围内,但不能保证。 父母可以选择调整视图大小或打破视图
- 另请参见:
-
getPreferredSpan(int)
-
getMinimumSpan
public float getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。- 参数
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
- 结果
- 可以渲染视图的最小跨度
- 另请参见:
-
getPreferredSpan(int)
-
getMaximumSpan
public float getMaximumSpan(int axis)
确定此视图沿轴的最大跨度。- 参数
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 结果
- 视图可以渲染到的最大跨度
- 另请参见:
-
getPreferredSpan(int)
-
preferenceChanged
public void preferenceChanged(View child, boolean width, boolean height)
子视图可以在父视图上调用此视图以指示首选项已更改,应重新考虑布局。 默认情况下,这只会向上传播到下一个父级。 根视图将在关联的文本组件上调用revalidate
。- 参数
-
child
- 子视图 -
width
- 如果宽度首选项已更改,width
true -
height
- 如果高度首选项已更改,height
true - 另请参见:
-
JComponent.revalidate()
-
getAlignment
public float getAlignment(int axis)
确定此视图沿轴的所需对齐方式。 返回所需的对齐方式。 这应该是一个值> = 0.0且<= 1.0,其中0表示原点对齐,1.0表示对齐距离原点的完整跨度。 0.5的对齐将是视图的中心。- 参数
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
- 结果
- 值0.5
-
paint
public abstract void paint(Graphics g, Shape allocation)
使用给定的渲染表面和该表面上的区域进行渲染。 视图可能需要进行布局并创建子视图以使其自身能够呈现到给定的分配中。- 参数
-
g
- 要使用的渲染表面 -
allocation
- 要分配的已分配区域
-
setParent
public void setParent(View parent)
建立此视图的父视图。 如果父视图正常运行,则可以保证在任何其他方法之前调用它。 这也是调用的最后一个方法,因为它被调用以指示视图也已从层次结构中删除。 调用此方法将父级设置为null时,此方法对其每个子级执行相同操作,从而传播已从视图树断开连接的通知。 如果重新实现,则应调用super.setParent()
。- 参数
-
parent
- 新父项,如果要从父项中删除视图,null
-
getViewCount
public int getViewCount()
返回此视图中的视图数。 由于默认值不是复合视图,因此返回0。- 结果
- 视图数> = 0
- 另请参见:
-
getViewCount()
-
getView
public View getView(int n)
获取第n个子视图。 由于默认情况下没有子项,因此返回null
。- 参数
-
n
- 要获取的视图编号,> = 0 && <getViewCount() - 结果
- 风景
-
removeAll
public void removeAll()
删除所有孩子。 这是对replace
的便利电话。- 从以下版本开始:
- 1.3
-
remove
public void remove(int i)
移除给定位置的一个孩子。 这是对replace
的便利电话。- 参数
-
i
- 职位 - 从以下版本开始:
- 1.3
-
insert
public void insert(int offs, View v)
插入单个子视图。 这是对replace
的便利电话。- 参数
-
offs
- 要在> = 0之前插入的视图的偏移量 -
v
- 视图 - 从以下版本开始:
- 1.3
- 另请参见:
-
replace(int, int, javax.swing.text.View[])
-
append
public void append(View v)
附加单个子视图。 这是对replace
的便利电话。- 参数
-
v
- 视图 - 从以下版本开始:
- 1.3
- 另请参见:
-
replace(int, int, javax.swing.text.View[])
-
replace
public void replace(int offset, int length, View[] views)
替换子视图。 如果没有视图要删除此行为作为插入。 如果没有要添加的视图,则此操作为删除。 要删除的视图将父级设置为null
,并删除对它们的内部引用,以便可以对它们进行垃圾回收。 实现此操作不执行任何操作,因为默认情况下视图没有子项。- 参数
-
offset
- 插入新视图的子视图的起始索引。 这应该是一个值> = 0和<= getViewCount -
length
- 要删除的现有子视图的数量这应该是值> = 0和<=(getViewCount() - offset)。 -
views
- 要添加的子视图。 该值可以是null
,表示没有添加子项(有用于删除)。 - 从以下版本开始:
- 1.3
-
getViewIndex
public int getViewIndex(int pos, Position.Bias b)
返回表示模型中给定位置的子视图索引。 默认情况下,视图没有子项,因此实现此操作以返回-1以指示任何位置都没有有效的子索引。- 参数
-
pos
- 位置> = 0 -
b
- 偏见 - 结果
- 表示给定位置的视图的索引,如果没有视图表示该位置,则返回-1
- 从以下版本开始:
- 1.3
-
getChildAllocation
public Shape getChildAllocation(int index, Shape a)
获取给定子视图的分配。 这使得能够找出各种视图所在的位置,而无需假设视图如何存储它们的位置。 这将返回null
因为默认情况下没有任何子视图。- 参数
-
index
- 孩子的索引,> = 0 && <getViewCount()
-
a
- 此视图的分配 - 结果
- 分配给孩子
-
getNextVisualPositionFrom
public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
提供一种方法来确定可能放置插入符的下一个可视化表示的模型位置。 某些视图可能不可见,它们可能与模型中的顺序不同,或者它们可能不允许访问模型中的某些位置。 此方法允许指定要在> = 0范围内转换的位置。 如果值为-1,将自动计算位置。 如果值<-1,则抛出BadLocationException
。- 参数
-
pos
- 要转换的位置 -
b
- 偏见 -
a
- 要分配的区域 -
direction
- 当前位置的方向,可以被认为是键盘上常见的箭头键。 这将是以下值之一:- SwingConstants.WEST
- SwingConstants.EAST
- SwingConstants.NORTH
- SwingConstants.SOUTH
-
biasRet
- 返回的偏见 - 结果
- 模型中最能代表下一个位置视觉位置的位置
- 异常
-
BadLocationException
- 给定位置不是文档中的有效位置 -
IllegalArgumentException
- 如果direction
没有上述合法值之一
-
modelToView
public abstract Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
为给定字符提供从文档模型坐标空间到视图坐标空间的映射。- 参数
-
pos
- 所需字符的位置(> = 0) -
a
- 视图的区域,包含请求的字符 -
b
- 如果位置是两个视图的边界,则偏向前一个字符或由偏移量表示的下一个字符;b
将具有以下值之一:-
Position.Bias.Forward
-
Position.Bias.Backward
-
- 结果
- 视图坐标空间中指定位置的字符的边界框
- 异常
-
BadLocationException
- 如果指定的位置不代表关联文档中的有效位置 -
IllegalArgumentException
- 如果b
不是上面列出的合法Position.Bias
之一 - 另请参见:
-
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
-
modelToView
public Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) throws BadLocationException
为给定区域提供从文档模型坐标空间到视图坐标空间的映射。 指定的区域被创建为第一个和最后一个字符位置的并集。- 参数
-
p0
- 第一个字符的位置(> = 0) -
b0
- 如果位置是两个视图的边界,则第一个字符位置偏向前一个字符或偏移量表示的下一个字符;b0
将具有以下值之一:-
Position.Bias.Forward
-
Position.Bias.Backward
-
-
p1
- 最后一个字符的位置(> = 0) -
b1
- 第二个字符位置的偏差,定义了上面显示的合法值之一 -
a
- 视图区域,包含请求的区域 - 结果
- 边界框,它是由第一个和最后一个字符位置指定的区域的并集
- 异常
-
BadLocationException
- 如果给定位置不代表关联文档中的有效位置 -
IllegalArgumentException
- 如果b0
或b1
不是上面列出的合法Position.Bias
之一 - 另请参见:
-
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
-
viewToModel
public abstract int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
提供从视图坐标空间到模型的逻辑坐标空间的映射。 将填充biasReturn
参数以指示给定的点更接近模型中的下一个字符或模型中的前一个字符。- 参数
-
x
- X坐标> = 0 -
y
- Y坐标> = 0 -
a
- 要分配的区域 -
biasReturn
- 返回的偏见 - 结果
-
模型中最能代表视图中给定点的位置> = 0.将填充
biasReturn
参数以指示给定的点更接近模型中的下一个字符或模型中的前一个字符。
-
insertUpdate
public void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
通知在该视图负责的位置将某些内容插入到文档中。 为了减轻子类的负担,此功能分散到子类可以重新实现的以下调用中:- 如果此视图负责的元素有任何更改,则调用
updateChildren
。 如果此视图具有表示子元素的子视图,则此方法应执行必要的操作以确保子视图正确表示模型。 - 调用
forwardUpdate
将DocumentEvent转发到适当的子视图。 - 调用
updateLayout
以使视图有机会修复其布局,重新安排布局或不执行任何操作。
- 参数
-
e
- 来自关联文档的更改信息 -
a
- 当前视图的分配 -
f
- 如果视图具有子级,则用于重建的工厂 - 另请参见:
-
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
- 如果此视图负责的元素有任何更改,则调用
-
removeUpdate
public void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
通知在该视图负责的位置从文档中删除了某些内容。 为了减轻子类的负担,此功能分散到子类可以重新实现的以下调用中:- 如果此视图负责的元素有任何更改,则调用
updateChildren
。 如果此视图具有表示子元素的子视图,则此方法应执行必要的操作以确保子视图正确表示模型。 - 调用
forwardUpdate
将DocumentEvent转发到适当的子视图。 - 调用
updateLayout
以使视图有机会修复其布局,重新安排布局或不执行任何操作。
- 参数
-
e
- 来自关联文档的更改信息 -
a
- 当前视图的分配 -
f
- 如果视图具有子级,则用于重建的工厂 - 另请参见:
-
removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
- 如果此视图负责的元素有任何更改,则调用
-
changedUpdate
public void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
从文档中发出通知,告知该视图负责的位置中的属性已更改。 为了减轻子类的负担,此功能分散到子类可以重新实现的以下调用中:- 如果此视图负责的元素有任何更改,则调用
updateChildren
。 如果此视图具有表示子元素的子视图,则此方法应执行必要的操作以确保子视图正确表示模型。 - 调用
forwardUpdate
将DocumentEvent转发到适当的子视图。 - 调用
updateLayout
以使视图有机会修复其布局,重新安排布局或不执行任何操作。
- 参数
-
e
- 来自关联文档的更改信息 -
a
- 当前视图的分配 -
f
- 如果视图具有子级,则用于重建的工厂 - 另请参见:
-
changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
- 如果此视图负责的元素有任何更改,则调用
-
getDocument
public Document getDocument()
获取与视图关联的模型。- 结果
-
视图模型,如果没有,
null
- 另请参见:
-
getDocument()
-
getStartOffset
public int getStartOffset()
获取此视图负责的模型部分。- 结果
- 模型的起始偏移量> = 0
- 另请参见:
-
getStartOffset()
-
getEndOffset
public int getEndOffset()
获取此视图负责的模型部分。- 结果
- 结果偏移到模型中> = 0
- 另请参见:
-
getEndOffset()
-
getElement
public Element getElement()
获取此视图映射到的主题的结构部分。 视图可能不对元素的整个部分负责。- 结果
- 主题
- 另请参见:
-
getElement()
-
getGraphics
public Graphics getGraphics()
获取Graphics
进行渲染。 这可用于确定字体特征,并且对于打印视图而言将不同于组件视图。- 结果
-
用于渲染的
Graphics
对象 - 从以下版本开始:
- 1.3
-
getAttributes
public AttributeSet getAttributes()
获取渲染时要使用的属性。 默认情况下,这只返回关联元素的属性。 应该使用此方法,而不是直接使用元素来获取对属性的访问,以允许混合使用特定于视图的属性,或者允许视图通过子类进行视图特定的属性转换。 每个视图应记录为渲染或布局而识别的属性,并应始终通过此方法返回的AttributeSet
访问它们。- 结果
- 渲染时使用的属性
-
breakView
public View breakView(int axis, int offset, float pos, float len)
试图在给定轴上打破此视图。 这是由尝试对其子项进行格式化的视图调用的。 例如,段落的视图通常会尝试将其子项放入行中,而表示文本块的视图有时可以分解为更小的段。这是为了返回视图本身而实现的,它表示不可破坏的默认行为。 如果视图确实支持中断,则返回的视图的起始偏移量应该是给定的偏移量,并且结束偏移量应小于或等于被破坏的视图的结束偏移量。
- 参数
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
-
offset
- 文档模型中破碎片段占用的位置> = 0.这将是返回的片段的起始偏移量 -
pos
- 沿着轴的位置,断开的视图将占据> = 0.这对于像标签计算这样的事情可能很有用 -
len
- 指定沿轴的距离,其中需要潜在的中断> = 0 - 结果
- 如果视图可以被破坏,则表示给定范围的视图片段。 如果视图不支持中断行为,则返回视图本身。
- 另请参见:
-
ParagraphView
-
createFragment
public View createFragment(int p0, int p1)
创建表示元素一部分的视图。 这在用于测量视图片段的格式化操作期间可能是有用的。 如果视图不支持分段(默认),则应返回自身。- 参数
-
p0
- 起始偏移量> = 0.这应该是大于或等于元素起始偏移量且小于元素结束偏移量的值。 -
p1
- 结束偏移量> p0。 这应该是小于或等于元素结束偏移量并且大于起始偏移量的元素的值。 - 结果
- 视图片段,或者如果视图不支持分割成片段本身
- 另请参见:
-
LabelView
-
getBreakWeight
public int getBreakWeight(int axis, float pos, float len)
确定此视图中休息机会的吸引力。 这可用于确定哪个视图在格式化过程中调用breakView
最具吸引力。 例如,表示其中包含空格的文本的视图可能比没有空格的视图更具吸引力。 重量越高,休息越有吸引力。 等于或小于BadBreakWeight
不应考虑中断。 应该破坏大于或等于ForcedBreakWeight
值。实现此方法是为了提供返回
BadBreakWeight
的默认行为,除非长度大于视图的长度,在这种情况下整个视图表示片段。 除非编写了一个视图来支持破坏行为,否则尝试打破视图并不具吸引力。 支持中断的视图示例是LabelView
。 使用中断权重的视图示例是ParagraphView
。- 参数
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
-
pos
- 断开视图开始的潜在位置> = 0.这可能对计算制表位置很有用 -
len
-指定从其中可能需要拆分> = 0 POS相对长度 - 结果
- 权重,应该是ForcedBreakWeight和BadBreakWeight之间的值
- 另请参见:
-
LabelView
,ParagraphView
,BadBreakWeight
,GoodBreakWeight
,ExcellentBreakWeight
,ForcedBreakWeight
-
getResizeWeight
public int getResizeWeight(int axis)
确定沿给定轴的视图的可调整性。 值0或更小不可调整大小。- 参数
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
- 结果
- 重量
-
setSize
public void setSize(float width, float height)
设置视图的大小。 如果它具有任何布局任务,这应该导致沿给定轴的视图布局。- 参数
-
width
- 宽度> = 0 -
height
- 高度> = 0
-
getContainer
public Container getContainer()
获取托管视图的容器。 这对于调度重绘,查找主机组件字体等等非常有用。默认实现是将查询转发到父视图。- 结果
-
容器,如果没有,
null
-
getViewFactory
public ViewFactory getViewFactory()
获取正在为视图层次结构提供的ViewFactory
实现。 通常情况下,这些视图是作为模型更新的参数,当模型最有可能需要工厂时,但此方法可用于在其他时间提供模型。- 结果
-
工厂,
null
如果没有
-
getToolTipText
public String getToolTipText(float x, float y, Shape allocation)
返回指定位置的工具提示文本。 默认实现返回传入位置标识的子视图中的值。- 参数
-
x
- x坐标 -
y
- y坐标 -
allocation
- View的当前分配。 - 结果
- 指定位置的工具提示文本
- 从以下版本开始:
- 1.4
- 另请参见:
-
JTextComponent.getToolTipText(java.awt.event.MouseEvent)
-
getViewIndex
public int getViewIndex(float x, float y, Shape allocation)
返回表示视图中给定位置的子视图索引。 这将迭代所有返回第一x
,其边界包含y
。- 参数
-
x
- x坐标 -
y
- y坐标 -
allocation
- 当前分配的视图。 - 结果
- 表示给定位置的视图的索引,如果没有视图表示该位置,则返回-1
- 从以下版本开始:
- 1.4
-
updateChildren
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
更新子视图以响应接收模型更改的通知,并且此视图负责的元素有更改记录。 实现此方法是为了假设子视图直接负责此视图所代表的元素的子元素。ViewFactory
用于为指定为ElementChange
添加的每个元素创建子视图,从给定的ElementChange
指定的索引开始。 将删除表示指定已删除元素的子视图数。- 参数
-
ec
- 此视图负责的元素的更改信息。 如果调用此方法,null
应该是null
-
e
- 来自关联文档的更改信息 -
f
- 用于构建子视图的工厂 - 结果
- 子视图是否表示此视图负责的元素的子元素。 有些视图会创建代表他们负责的元素的一部分的子视图,并且应该返回false。 此信息用于确定是否应转发添加元素范围内的视图
- 从以下版本开始:
- 1.3
- 另请参见:
-
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
forwardUpdate
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
将给定的DocumentEvent
转发给需要通知模型更改的子视图。 如果该视图负责的元素有变化,则应在转发时考虑(即不应通知新的子视图)。- 参数
-
ec
- 对此视图负责的元素的更改(如果没有更改,则可能是null
)。 -
e
- 来自关联文档的更改信息 -
a
- 当前视图的分配 -
f
- 如果视图具有子级,则用于重建的工厂 - 从以下版本开始:
- 1.3
- 另请参见:
-
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
forwardUpdateToView
protected void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
将DocumentEvent
转发到给孩子视图。 这只是消息来与给呼叫的视图insertUpdate
,removeUpdate
,或changedUpdate
取决于事件的类型。 这被forwardUpdate
调用,以将事件转发给需要它的孩子。- 参数
-
v
- 将事件转发到的子视图 -
e
- 来自关联文档的更改信息 -
a
- 当前视图的分配 -
f
- 如果视图有子项,则用于重建的工厂 - 从以下版本开始:
- 1.3
- 另请参见:
-
forwardUpdate(javax.swing.event.DocumentEvent.ElementChange, javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
updateLayout
protected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
更新布局以响应从模型接收更改通知。 如果ElementChange
记录不是null
则执行此操作以调用preferenceChanged
以重新安排新布局。- 参数
-
ec
- 对此视图负责的元素的更改(如果没有更改,则可能是null
) -
e
- 来自关联文档的更改信息 -
a
- 当前视图的分配 - 从以下版本开始:
- 1.3
- 另请参见:
-
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
modelToView
@Deprecated public Shape modelToView(int pos, Shape a) throws BadLocationException
Deprecated.提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。 这是为了将偏差默认为Position.Bias.Forward
,这是之前暗示的。- 参数
-
pos
- 要转换的位置> = 0 -
a
- 要分配的区域 - 结果
- 返回给定位置的边界框
- 异常
-
BadLocationException
- 如果给定位置不代表关联文档中的有效位置 - 另请参见:
-
modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)
-
viewToModel
@Deprecated public int viewToModel(float x, float y, Shape a)
Deprecated.提供从视图坐标空间到模型的逻辑坐标空间的映射。- 参数
-
x
- X坐标> = 0 -
y
- Y坐标> = 0 -
a
- 要分配的区域 - 结果
- 模型中最能代表视图中给定点的位置> = 0
- 另请参见:
-
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
-
-