- 所有已实现的接口:
-
ViewFactory
文本组件外观的基础。这提供了在为JTextComponent
的扩展创建外观时可能有用的基本编辑器视图和控制器服务。
大多数状态保存在关联的JTextComponent
中作为绑定属性,并且UI为各种属性安装了默认值。此默认值将为所有属性安装某些内容。通常,LAF实现会做更多。但是,至少,LAF通常会安装键绑定。
如果与JTextComponent关联的Document
是AbstractDocument
的子类,则此类还提供了一些并发支持。对于View(或View层次结构)的访问在任何更改模型的线程和Swing事件线程之间进行序列化(预期进行渲染、执行模型/视图坐标转换等)。任何对根视图的访问都应首先在AbstractDocument上获取读取锁,并在finally块中释放该锁。
定义的一个重要方法是getPropertyPrefix()
方法,该方法用作从UIManager获取默认值的键的基础。该字符串应反映TextUI的类型(例如TextField、TextArea等),而不包括名称的特定LAF部分(例如Metal、Motif等)。
要构建模型的视图,可以采用以下策略之一。
- 一种策略是简单地在UI中重新定义ViewFactory接口。默认情况下,此UI本身充当View实现的工厂。这对于简单的工厂很有用。要执行此操作,请重新实现
create(javax.swing.text.Element)
方法。 - 创建更复杂类型的文档的常见策略是使EditorKit实现返回一个工厂。由于EditorKit绑定了维护文档类型所需的所有部件,因此工厂通常是其中的重要部分,并且应由EditorKit实现生成。
警告: 此类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将对所有JavaBeans的长期存储支持添加到java.beans
包中。请参见XMLEncoder
。
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
接口Caret
的默认实现。static class
接口Highlighter
的默认实现。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription为元素创建一个视图。为元素创建一个视图。protected Caret
创建用于插入符号的对象。protected Highlighter
创建用于添加高亮的对象。protected Keymap
创建用于文本组件的键映射,并将任何必要的绑定安装到其中。默认情况下,键映射在此类型的所有实例之间共享。键映射的名称由getKeymapName方法定义。如果找不到键映射,则使用JTextComponent中的DEFAULT_KEYMAP。用于创建键映射的绑定集是通过使用由
getPropertyPrefix()
方法和字符串.keyBindings
组合形成的键从UIManager中获取的。类型预期为JTextComponent.KeyBinding[]
。void
damageRange
(JTextComponent tc, int p0, int p1) 导致负责给定模型部分的视图重新绘制。void
damageRange
(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias) 导致负责给定模型部分的视图重新绘制。protected final JTextComponent
获取与此UI实现关联的文本组件。获取UI的EditorKit。protected String
获取将默认情况下安装/使用的键映射的名称。获取编辑器组件的最大大小。获取编辑器组件的最小大小。int
getNextVisualPositionFrom
(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) 提供一种确定下一个可视表示的模型位置的方法,可以在其中放置插入符号。获取编辑器组件的首选大小。protected abstract String
获取用作通过UIManager查找属性的键的名称。这用作所有标准文本属性的前缀。获取具有可以遍历以确定如何空间表示模型的关联文本组件(即层次结构的根)的分配的View。getToolTipText
(JTextComponent t, Point pt) 返回要在传入位置用作工具提示的字符串。protected Rectangle
获取要给根View的分配。protected void
初始化组件属性,例如字体、前景色、背景色、插入符号颜色、选择颜色、选定文本颜色、禁用文本颜色、边框和边距。如果当前值为null或UIResource,则设置每个属性。protected void
注册键盘操作。protected void
为UI安装侦听器。void
为组件安装UI。protected void
标记模型更改。modelToView
(JTextComponent tc, int pos) 已弃用。modelToView
(JTextComponent tc, int pos, Position.Bias bias) final void
paint
(Graphics g, JComponent c) 绘制界面。protected void
为视图绘制背景。protected void
以确保模型不会从此线程的视图更改的保证安全地绘制界面。protected void
当关联的JTextComponent上的绑定属性更改时调用此方法。protected final void
设置视图层次结构的当前根,并调用invalidate()。protected void
将未明确覆盖的组件属性设置为null
。protected void
注销键盘操作。protected void
为UI卸载侦听器。void
为组件卸载UI。void
update
(Graphics g, JComponent c) 超类以不可控制的方式绘制背景(即可能希望将图像平铺到背景中)。int
viewToModel
(JTextComponent tc, Point pt) int
viewToModel
(JTextComponent tc, Point pt, Position.Bias[] biasReturn) Methods declared in class javax.swing.plaf.TextUI
getToolTipText2D, modelToView2D, viewToModel2D
Methods declared in class javax.swing.plaf.ComponentUI
contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior
-
Constructor Details
-
BasicTextUI
public BasicTextUI()创建一个新的UI。
-
-
Method Details
-
createCaret
创建用于插入符号的对象。默认情况下,将创建BasicCaret的实例。可以重新定义此方法以提供实现InputPosition接口或JCaret的子类的其他内容。- 返回:
- 插入符对象
-
createHighlighter
创建用于添加高亮的对象。默认情况下,将创建BasicHighlighter的实例。可以重新定义此方法以提供实现Highlighter接口或DefaultHighlighter的子类的其他内容。- 返回:
- 高亮器
-
getKeymapName
获取将默认情况下安装/使用的键映射的名称。此方法实现为基于类名创建名称。名称是去除包前缀的类的名称。- 返回:
- 名称
-
createKeymap
创建用于文本组件的键映射,并将任何必要的绑定安装到其中。默认情况下,键映射在此类型的所有实例之间共享。键映射的名称由getKeymapName方法定义。如果找不到键映射,则使用JTextComponent中的DEFAULT_KEYMAP。用于创建键映射的绑定集是通过使用由
getPropertyPrefix()
方法和字符串.keyBindings
组合形成的键从UIManager中获取的。类型预期为JTextComponent.KeyBinding[]
。- 返回:
- 键映射
- 参见:
-
propertyChange
当关联的JTextComponent上的绑定属性更改时调用此方法。这是一个挂钩,UI实现可以更改以反映UI如何显示JTextComponent子类的绑定属性。此实现不执行任何操作(即在调用此方法之前,JTextComponent本身的属性的响应已处理)。如果可编辑状态和/或启用状态更改,此实现将更新文本组件的背景。- 参数:
-
evt
- 属性更改事件
-
getPropertyPrefix
获取用作通过UIManager查找属性的键的名称。这用作所有标准文本属性的前缀。- 返回:
- 名称
-
installDefaults
protected void installDefaults()初始化组件属性,例如字体、前景色、背景色、插入符号颜色、选择颜色、选定文本颜色、禁用文本颜色、边框和边距。如果当前值为null或UIResource,则设置每个属性。- 参见:
-
uninstallDefaults
protected void uninstallDefaults()将未明确覆盖的组件属性设置为null
。如果当前值不是UIResource
,则认为属性已被覆盖。- 参见:
-
installListeners
protected void installListeners()安装UI的监听器。 -
uninstallListeners
protected void uninstallListeners()卸载UI的监听器。 -
installKeyboardActions
protected void installKeyboardActions()注册键盘操作。 -
uninstallKeyboardActions
protected void uninstallKeyboardActions()注销键盘操作。 -
paintBackground
为视图绘制背景。只有在相关组件的isOpaque()为true时才会调用此方法。默认情况下,会绘制组件的背景颜色。- 参数:
-
g
- 图形上下文
-
getComponent
获取与此UI实现关联的文本组件。在UI安装之前,此值将为null。- 返回:
- 编辑器组件
-
modelChanged
protected void modelChanged()标记模型更改。每当模型发生更改时都会调用此方法。它被实现为重建视图层次结构,以表示相关模型的默认根元素。 -
setView
设置视图层次结构的当前根,并调用invalidate()。如果存在任何子组件,它们将被移除(即假定它们来自于嵌入在视图中的组件)。- 参数:
-
v
- 根视图
-
paintSafely
安全地绘制界面,保证模型不会从此线程的视图更改。此方法按照以下顺序进行渲染。- 如果组件标记为不透明,则使用当前组件的背景颜色绘制背景。
- 绘制高亮(如果有)。
- 绘制视图层次结构。
- 绘制插入符号。
- 参数:
-
g
- 图形上下文
-
installUI
为组件安装UI。此方法执行以下操作。- 如果客户端程序尚未设置opaque属性,则将相关组件设置为不透明。这将导致绘制组件的背景颜色。
- 将默认插入符号和高亮器安装到相关组件中。仅当它们的当前值为
null
或UIResource
的实例时才设置这些属性。 - 连接到编辑器和模型。如果没有模型,则会创建一个默认模型。
- 创建用于表示模型的视图工厂和视图层次结构。
- 覆盖:
-
installUI
在类ComponentUI
中 - 参数:
-
c
- 编辑器组件 - 参见:
-
uninstallUI
为组件卸载UI。这将移除监听器,卸载高亮器,移除视图,并将键映射设置为null。- 覆盖:
-
uninstallUI
在类ComponentUI
中 - 参数:
-
c
- 编辑器组件 - 参见:
-
update
超类以不可控的方式绘制背景(例如,可能希望将图像平铺到背景中)。为防止此方法被调用两次,此方法被重新实现为简单绘制。注意: 超类在渲染背景时也不是线程安全的,尽管默认渲染不会出现问题。
- 覆盖:
-
update
在类ComponentUI
中 - 参数:
-
g
- 用于绘制的Graphics
上下文 -
c
- 正在绘制的组件;通常会忽略此参数,但如果UI对象是无状态的并且由多个组件共享,则可能会使用它 - 参见:
-
paint
绘制界面。此方法路由到paintSafely方法,保证模型不会从此线程的视图更改,同时进行渲染(如果相关模型是从AbstractDocument派生的)。这使得模型有可能异步更新。- 覆盖:
-
paint
在类ComponentUI
中 - 参数:
-
g
- 图形上下文 -
c
- 编辑器组件 - 参见:
-
getPreferredSize
获取编辑器组件的首选大小。如果在收到此请求之前给组件设置了大小,则会将视图层次结构的大小设置为反映在请求视图层次结构的首选大小之前的组件大小。这允许格式化视图根据当前组件大小进行格式化,然后再回答请求。其他视图不关心当前格式化大小,无论如何都会给出相同的答案。- 覆盖:
-
getPreferredSize
在类ComponentUI
中 - 参数:
-
c
- 编辑器组件 - 返回:
- 大小
- 参见:
-
getMinimumSize
获取编辑器组件的最小大小。- 覆盖:
-
getMinimumSize
在类ComponentUI
中 - 参数:
-
c
- 编辑器组件 - 返回:
- 大小
- 参见:
-
getMaximumSize
获取编辑器组件的最大大小。- 覆盖:
-
getMaximumSize
在类ComponentUI
中 - 参数:
-
c
- 编辑器组件 - 返回:
- 大小
- 参见:
-
getVisibleEditorRect
获取分配给根视图的矩形。由于一系列不幸的历史事件,此方法的命名不当。返回的矩形与可见性无关。组件必须具有非零正大小才能计算此转换。- 返回:
- 根视图的边界框
-
modelToView
@Deprecated(since="9") public Rectangle modelToView(JTextComponent tc, int pos) throws BadLocationException Deprecated.将模型中给定位置转换为视图坐标系中的位置。组件必须具有非零正大小才能计算此转换。- 指定者:
-
modelToView
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 -
pos
- 要转换的模型中的本地位置 >= 0 - 返回:
- 作为矩形的坐标,如果模型未绘制则返回null
- 抛出:
-
BadLocationException
- 如果给定位置在关联文档中不是有效位置 - 参见:
-
modelToView
@Deprecated(since="9") public Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException Deprecated.将模型中给定位置转换为视图坐标系中的位置。组件必须具有非零正大小才能计算此转换。- 指定者:
-
modelToView
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 -
pos
- 要转换的模型中的本地位置 >= 0 -
bias
- 位置的偏好 - 返回:
- 作为矩形的坐标,如果模型未被绘制则为null
- 抛出:
-
BadLocationException
- 如果给定位置在关联文档中不表示有效位置 - 参见:
-
viewToModel
Deprecated.将视图坐标系中给定位置转换为模型中最近的代表位置。组件必须具有非零正大小才能计算此转换。- 指定者:
-
viewToModel
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 -
pt
- 要转换的视图中的位置。这应该与鼠标事件中的坐标系相同。 - 返回:
- 距离文档开头的偏移量 >= 0,如果未绘制则为-1
- 参见:
-
viewToModel
@Deprecated(since="9") public int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn) Deprecated.将视图坐标系中给定位置转换为模型中最近的代表位置。组件必须具有非零正大小才能计算此转换。- 指定者:
-
viewToModel
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 -
pt
- 要转换的视图中的位置。这应该与鼠标事件中的坐标系相同。 -
biasReturn
- 由此方法填充,以指示给定点是更接近前一个字符还是下一个字符的位置 - 返回:
- 距离文档开头的偏移量 >= 0,如果组件尚未具有正大小则为-1。
- 参见:
-
getNextVisualPositionFrom
public int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) throws BadLocationException 提供一种确定下一个可能放置插入符号的视觉表示模型位置的方式。某些视图可能不可见,它们可能不按照模型中找到的顺序排列,或者它们可能根本不允许访问模型中的某些位置。- 指定者:
-
getNextVisualPositionFrom
在类TextUI
中 - 参数:
-
t
- 安装此UI的文本组件 -
pos
- 要转换的位置 >= 0 -
b
- 位置的偏好 -
direction
- 从当前位置开始的方向,可以被视为键盘上通常找到的箭头键。这可以是SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH或SwingConstants.SOUTH -
biasRet
- 一个数组,用于包含返回位置的偏好 - 返回:
- 最好表示下一个位置视觉位置的模型中的位置
- 抛出:
-
BadLocationException
- 对于文档模型中的错误位置
-
damageRange
导致负责给定模型部分的视图重新绘制。如果视图当前未绘制,则不执行任何操作。- 指定者:
-
damageRange
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 -
p0
- 范围的开始 >= 0 -
p1
- 范围的结束 >= p0 - 参见:
-
damageRange
public void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias) 导致负责给定模型部分的视图重新绘制。- 指定者:
-
damageRange
在类TextUI
中 - 参数:
-
t
- 安装此UI的文本组件 -
p0
- 范围的开始 >= 0 -
p1
- 范围的结束 >= p0 -
p0Bias
- 第一个字符位置的偏好,朝向前一个字符或下一个字符 -
p1Bias
- 第二个字符位置的偏好,朝向前一个字符或下一个字符
-
getEditorKit
获取UI的EditorKit。- 指定者:
-
getEditorKit
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 - 返回:
- 编辑器功能
- 参见:
-
getRootView
获取具有关联文本组件的分配(即层次结构的根)的View,可以遍历以确定模型在空间上的表示方式。警告: 可以从根视图遍历视图层次结构,还可以执行其他操作。以这种方式执行的操作无法像通过TextUI的简单方法调用那样受到保护。因此,调用此方法的任何逻辑必须安排在并发存在的情况下进行正确操作!
- 指定者:
-
getRootView
在类TextUI
中 - 参数:
-
tc
- 安装此UI的文本组件 - 返回:
- 视图
- 参见:
-
getToolTipText
返回在传入位置使用作为工具提示的字符串。这将方法转发到根View。- 覆盖:
-
getToolTipText
在类TextUI
中 - 参数:
-
t
- 安装此UI的文本组件 -
pt
- 指定要获取工具提示的位置的Point
- 返回:
-
包含工具提示的
String
- 自1.4起:
- 1.4
- 参见:
-
create
为元素创建一个视图。如果子类希望直接实现生成视图的工厂,它应重新实现此方法。默认情况下,它只返回null,表示无法表示元素。- 指定者:
-
create
在接口ViewFactory
中 - 参数:
-
elem
- 元素 - 返回:
- 视图
- 参见:
-
create
为元素创建一个视图。如果子类希望直接实现生成视图的工厂,它应重新实现此方法。默认情况下,它只返回null,表示无法表示元素的部分。- 参数:
-
elem
- 元素 -
p0
- 起始偏移量 >= 0 -
p1
- 结束偏移量 >= p0 - 返回:
- 视图
-
TextUI.modelToView2D(JTextComponent, int, Position.Bias)