- java.lang.Object
-
- javax.swing.plaf.ComponentUI
-
- javax.swing.plaf.TextUI
-
- javax.swing.plaf.basic.BasicTextUI
-
- All Implemented Interfaces:
-
ViewFactory
- 已知直接子类:
-
BasicEditorPaneUI,BasicTextAreaUI,BasicTextFieldUI,DefaultTextUI
public abstract class BasicTextUI extends TextUI implements ViewFactory
文本元素的外观和感觉的基础。 这提供了基本的编辑器视图和控制器服务,在为
JTextComponent的扩展创建外观时可能很有用。大多数状态作为绑定属性保存在关联的
JTextComponent中,UI会为各种属性安装默认值。 此默认值将为所有属性安装。 通常,LAF实现将会更多。 至少,LAF通常会安装密钥绑定。如果与JTextComponent相关联的
Document是AbstractDocument的子类,则AbstractDocument还提供了一些并发支持。 访问视图(或视图层次结构)在任何使模型突变的线程与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
Nested Classes Modifier and Type Class 描述 static classBasicTextUI.BasicCaret接口默认实现Caret。static classBasicTextUI.BasicHighlighter界面默认实现Highlighter。
-
构造方法摘要
构造方法 Constructor 描述 BasicTextUI()创建一个新的UI。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 Viewcreate(Element elem)创建元素的视图。Viewcreate(Element elem, int p0, int p1)创建元素的视图。protected CaretcreateCaret()创建用于插入符号的对象。protected HighlightercreateHighlighter()创建用于添加高光的对象。protected KeymapcreateKeymap()创建要用于文本组件的键盘映射,并在其中安装任何必需的绑定。voiddamageRange(JTextComponent tc, int p0, int p1)导致部分视图对模型的给定部分负责。voiddamageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)导致部分视图对模型的给定部分负责。protected JTextComponentgetComponent()获取与此UI实现相关联的文本组件。EditorKitgetEditorKit(JTextComponent tc)获取用户界面的EditorKit。protected StringgetKeymapName()获取此UI将默认安装/使用的键盘映射的名称。DimensiongetMaximumSize(JComponent c)获取编辑器组件的最大大小。DimensiongetMinimumSize(JComponent c)获取编辑器组件的最小大小。intgetNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet)提供一种方法来确定可能放置插入符号的下一个视觉表示的模型位置。DimensiongetPreferredSize(JComponent c)获取编辑器组件的首选大小。protected abstract StringgetPropertyPrefix()获取通过UIManager查找属性的键。ViewgetRootView(JTextComponent tc)通过分配可以遍历的关联文本组件(即层次结构的根)来获取视图,以确定模型在空间上的表示方式。StringgetToolTipText(JTextComponent t, Point pt)返回要用作传入位置的工具提示的字符串。protected RectanglegetVisibleEditorRect()获取分配给根视图。protected voidinstallDefaults()初始化组件属性,如字体,前景,背景,插入符号颜色,选择颜色,选定的文本颜色,禁用的文本颜色和边框颜色。protected voidinstallKeyboardActions()注册键盘操作。protected voidinstallListeners()安装用户界面的侦听器。voidinstallUI(JComponent c)安装组件的UI。protected voidmodelChanged()标志模型更改。RectanglemodelToView(JTextComponent tc, int pos)RectanglemodelToView(JTextComponent tc, int pos, Position.Bias bias)Rectangle2DmodelToView2D(JTextComponent tc, int pos, Position.Bias bias)将模型中的给定位置转换为视图坐标系中的一个位置。voidpaint(Graphics g, JComponent c)绘制界面。protected voidpaintBackground(Graphics g)绘制视图的背景。protected voidpaintSafely(Graphics g)保证界面安全,保证模型不会从此线程的视图中改变。protected voidpropertyChange(PropertyChangeEvent evt)当在关联的JTextComponent上更改bound属性时,将调用此方法。protected voidsetView(View v)设置视图层次结构的当前根,并调用invalidate()。protected voiduninstallDefaults()将未明确覆盖的组件属性设置为null。protected voiduninstallKeyboardActions()取消注册键盘操作。protected voiduninstallListeners()卸载UI的监听器。voiduninstallUI(JComponent c)卸载组件的UI。voidupdate(Graphics g, JComponent c)Superclass以不可控制的方式绘制背景(即可能需要将图像平铺到背景中)。intviewToModel(JTextComponent tc, Point pt)intviewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)intviewToModel2D(JTextComponent tc, Point2D pt, Position.Bias[] biasReturn)提供从视图坐标空间到模型的逻辑坐标空间的映射。-
Methods inherited from class javax.swing.plaf.ComponentUI
contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class javax.swing.plaf.TextUI
getToolTipText2D
-
-
-
-
方法详细信息
-
createCaret
protected Caret createCaret()
创建用于插入符号的对象。 默认情况下,创建BasicCaret的一个实例。 该方法可以重新定义,以提供实现InputPosition接口或JCaret子类的其他东西。- 结果
- 插入符号对象
-
createHighlighter
protected Highlighter createHighlighter()
创建用于添加高光的对象。 默认情况下,创建BasicHighlighter的实例。 该方法可以重新定义,以提供实现荧光笔界面或DefaultHighlighter子类的其他内容。- 结果
- 荧光笔
-
getKeymapName
protected String getKeymapName()
获取此UI将默认安装/使用的键盘映射的名称。 这是为了根据类名创建一个名称。 名称是删除包前缀的类的名称。- 结果
- 名字
-
createKeymap
protected Keymap createKeymap()
创建要用于文本组件的键盘映射,并在其中安装任何必需的绑定。 默认情况下,键盘映射在这种类型的TextUI的所有实例之间共享。 keymap具有由getKeymapName方法定义的名称。 如果未找到键盘映射,则使用来自JTextComponent的DEFAULT_KEYMAP。用于创建键盘映射的绑定集由UIManager使用通过组合
getPropertyPrefix()方法和字符串.keyBindings形成的键来.keyBindings。 预计类型为JTextComponent.KeyBinding[]。- 结果
- 键盘图
- 另请参见:
-
getKeymapName(),JTextComponent
-
propertyChange
protected void propertyChange(PropertyChangeEvent evt)
当在关联的JTextComponent上更改bound属性时,将调用此方法。 这是一个钩子,UI实现可能会更改,以反映UI如何显示JTextComponent子类的绑定属性。 这被实现为不做任何事情(即,在调用此方法之前处理JTextComponent中对属性的响应)。 如果可编辑和/或启用状态改变,此实现会更新文本组件的背景。- 参数
-
evt- 财产变更事件
-
getPropertyPrefix
protected abstract String getPropertyPrefix()
获取通过UIManager查找属性的键。 这被用作所有标准文本属性的前缀。- 结果
- 名字
-
installDefaults
protected void installDefaults()
初始化组件属性,如字体,前景,背景,插入符号颜色,选择颜色,选定的文本颜色,禁用的文本颜色和边框颜色。 只有当当前值为null或UIResource时才会设置字体,前景和后台属性,如果当前值为空,则设置其他属性。
-
uninstallDefaults
protected void uninstallDefaults()
将未明确覆盖的组件属性设置为null。 如果某个属性的当前值不是UIResource则该属性被视为被覆盖。
-
installListeners
protected void installListeners()
安装用户界面的侦听器。
-
uninstallListeners
protected void uninstallListeners()
卸载UI的监听器。
-
installKeyboardActions
protected void installKeyboardActions()
注册键盘操作。
-
uninstallKeyboardActions
protected void uninstallKeyboardActions()
取消注册键盘操作。
-
paintBackground
protected void paintBackground(Graphics g)
绘制视图的背景。 这将仅在相关组件上的isOpaque()为true时调用。 默认是绘制组件的背景颜色。- 参数
-
g- 图形上下文
-
getComponent
protected final JTextComponent getComponent()
获取与此UI实现相关联的文本组件。 这将是空的,直到ui已经安装。- 结果
- 编辑器组件
-
modelChanged
protected void modelChanged()
标志模型更改。 只要模型发生变化,就会调用这个。 它被实现以重建视图层次结构以表示相关模型的默认根元素。
-
setView
protected final void setView(View v)
设置视图层次结构的当前根,并调用invalidate()。 如果有任何子组件,它们将被删除(即,假设是来自嵌入在视图中的组件)。- 参数
-
v- 根视图
-
paintSafely
protected void paintSafely(Graphics g)
保证界面安全,保证模型不会从此线程的视图中改变。 这样做会从后面到前面的渲染。- 如果组件标记为不透明,则背景将以组件的当前背景颜色绘制。
- 亮点(如果有的话)被画。
- 绘制了视图层次结构。
- 插入符号被画。
- 参数
-
g- 图形上下文
-
installUI
public void installUI(JComponent c)
安装组件的UI。 这做了以下事情。- 如果客户端程序尚未设置opaque属性,则将关联组件设置为opaque。 这将导致组件的背景颜色被绘制。
- 将默认插入符号和荧光笔安装到关联的组件中。 仅当这些属性的当前值为
null或null的实例时才会设置 。 - 附加到编辑和模型。 如果没有模型,则创建默认模型。
- 创建视图工厂和用于表示模型的视图层次结构。
- 重写:
-
installUI在ComponentUI - 参数
-
c- 编辑器组件 - 另请参见:
-
ComponentUI.installUI(javax.swing.JComponent)
-
uninstallUI
public void uninstallUI(JComponent c)
卸载组件的UI。 这将删除侦听器,卸载荧光笔,删除视图,并将其关闭。- 重写:
-
uninstallUI在ComponentUI - 参数
-
c- 编辑器组件 - 另请参见:
-
ComponentUI.uninstallUI(javax.swing.JComponent)
-
update
public void update(Graphics g, JComponent c)
Superclass以不可控制的方式绘制背景(即可能需要将图像平铺到背景中)。 为了防止这种情况发生两次,该方法被重新实现以简单地绘制。注意:注意:Superclass在渲染背景时也不是线程安全的,尽管这不是默认渲染的问题。
- 重写:
-
update在ComponentUI - 参数
-
g- 要绘画的Graphics上下文 -
c- 正在涂漆的部件; 这个参数经常被忽略,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用 - 另请参见:
-
ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent),JComponent.paintComponent(java.awt.Graphics)
-
paint
public final void paint(Graphics g, JComponent c)
绘制界面。 这将被传递到paintSafely方法,保证模型在渲染时不会从此线程的视图中更改(如果关联的模型派生自AbstractDocument)。 这样可以使模型有可能异步更新。- 重写:
-
paint在ComponentUI - 参数
-
g- 图形上下文 -
c- 编辑器组件 - 另请参见:
-
ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
-
getPreferredSize
public Dimension getPreferredSize(JComponent c)
获取编辑器组件的首选大小。 如果组件在接收到此请求之前已经被赋予了一个大小,那么它将在请求视图层次结构的首选大小之前设置视图层次结构的大小以反映组件的大小。 这允许格式化视图在回答请求之前格式化为当前组件大小。 其他视图不关心当前格式的大小,也可以给出相同的答案。- 重写:
-
getPreferredSize在ComponentUI - 参数
-
c- 编辑器组件 - 结果
- 尺寸
- 另请参见:
-
JComponent.getPreferredSize(),LayoutManager.preferredLayoutSize(java.awt.Container)
-
getMinimumSize
public Dimension getMinimumSize(JComponent c)
获取编辑器组件的最小大小。
-
getMaximumSize
public Dimension getMaximumSize(JComponent c)
获取编辑器组件的最大大小。- 重写:
-
getMaximumSize在ComponentUI - 参数
-
c- 编辑器组件 - 结果
- 尺寸
- 另请参见:
-
JComponent.getMaximumSize(),LayoutManager2.maximumLayoutSize(java.awt.Container)
-
getVisibleEditorRect
protected Rectangle getVisibleEditorRect()
获取分配给根视图。 由于一系列不幸的历史事件,这种方法被不正当地命名。 返回的Rectangle与可见性无关。 该组件必须具有非零正的大小,以便计算该翻译。- 结果
- 根视图的边框
-
modelToView
@Deprecated(since="9") public Rectangle modelToView(JTextComponent tc, int pos) throws BadLocationException
将模型中的给定位置转换为视图坐标系中的一个位置。 该组件必须具有非零正的大小,以便计算该翻译。- Specified by:
-
modelToView在TextUI - 参数
-
tc- 安装此UI的文本组件 -
pos- 模型中的本地位置翻译> = 0 - 结果
- 坐标为矩形,如果模型未绘制则为null
- 异常
-
BadLocationException- 如果给定的位置不表示相关文档中的有效位置 - 另请参见:
-
TextUI.modelToView(javax.swing.text.JTextComponent, int)
-
modelToView
@Deprecated(since="9") public Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException
将模型中的给定位置转换为视图坐标系中的一个位置。 该组件必须具有非零正的大小,以便计算该翻译。- Specified by:
-
modelToView在TextUI - 参数
-
tc- 安装此UI的文本组件 -
pos- 模型中的本地位置翻译> = 0 -
bias- 职位的偏见 - 结果
- 坐标为矩形,如果模型未绘制则为null
- 异常
-
BadLocationException- 如果给定的位置不表示相关文档中的有效位置 - 另请参见:
-
TextUI.modelToView(javax.swing.text.JTextComponent, int)
-
modelToView2D
public Rectangle2D modelToView2D(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException
描述从类复制:TextUI将模型中的给定位置转换为视图坐标系中的一个位置。- 重写:
-
modelToView2D在TextUI - 参数
-
tc- 安装此UI的文本组件 -
pos- 模型中的本地位置翻译>= 0 -
bias- 职位的偏见 - 结果
-
坐标为
Rectangle2D - 异常
-
BadLocationException- 如果给定的位置不表示相关文档中的有效位置
-
viewToModel
@Deprecated(since="9") public int viewToModel(JTextComponent tc, Point pt)
将视图坐标系中的给定位置转换为模型中最近的代表位置。 该组件必须具有非零正的大小,以便计算该翻译。- Specified by:
-
viewToModel在TextUI - 参数
-
tc- 安装此UI的文本组件 -
pt- 视图中的位置翻译。 这应该在与鼠标事件相同的坐标系统中。 - 结果
- 从文档起始的偏移量> = 0,-1如果没有绘制
- 另请参见:
-
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
-
viewToModel
@Deprecated(since="9") public int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
将视图坐标系中的给定位置转换为模型中最近的代表位置。 该组件必须具有非零正的大小,以便计算该翻译。- Specified by:
-
viewToModel在TextUI - 参数
-
tc- 安装此UI的文本组件 -
pt- 视图中的位置翻译。 这应该在与鼠标事件相同的坐标系统中。 -
biasReturn- 通过这种方法填写,以指示给定的点是否更接近模型中的上一个或下一个字符 - 结果
- 从文档开始的偏移量> = 0,如果组件还没有正的大小,则为-1。
- 另请参见:
-
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
-
viewToModel2D
public int viewToModel2D(JTextComponent tc, Point2D pt, Position.Bias[] biasReturn)
描述从类复制:TextUI提供从视图坐标空间到模型的逻辑坐标空间的映射。- 重写:
-
viewToModel2D在TextUI - 参数
-
tc- 安装此UI的文本组件 -
pt- 视图中的位置翻译。 -
biasReturn- 通过这种方法填写,以指示给定的点是否更接近模型中的上一个或下一个字符 - 结果
-
模型中最符合视图
>= 0给定点的>= 0
-
getNextVisualPositionFrom
public int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) throws BadLocationException
提供一种方法来确定可能放置插入符号的下一个视觉表示的模型位置。 某些视图可能不可见,它们可能与模型中找不到相同的顺序,也可能不允许访问模型中的某些位置。- Specified by:
-
getNextVisualPositionFrom在TextUI - 参数
-
t- 安装此UI的文本组件 -
pos- 转换> = 0的位置 -
b- 位置的偏差 -
direction- 从当前位置的方向,可以被认为是通常在键盘上找到的箭头键。 这可能是SwingConstants.WEST,SwingConstants.EAST,SwingConstants.NORTH或SwingConstants.SOUTH -
biasRet- 一个数组,用于包含返回位置的偏差 - 结果
- 模型中最能代表下一个位置视觉位置的位置
- 异常
-
BadLocationException- 对于文档模型中的错误位置
-
damageRange
public void damageRange(JTextComponent tc, int p0, int p1)
导致部分视图对模型的给定部分负责。 如果视图当前未绘制,则不执行任何操作。- Specified by:
-
damageRange在TextUI - 参数
-
tc- 安装此UI的文本组件 -
p0- 范围的开始> = 0 -
p1- 范围的结束> = p0 - 另请参见:
-
TextUI.damageRange(javax.swing.text.JTextComponent, int, int)
-
damageRange
public void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
导致部分视图对模型的给定部分负责。- Specified by:
-
damageRange在TextUI - 参数
-
p0- 范围的开始> = 0 -
p1- 范围的结束> = p0 -
t- 安装此UI的文本组件 -
p0Bias- 第一个字符位置偏向前一个字符或下一个字符 -
p1Bias- 第二个字符位置偏向前一个字符或下一个字符
-
getEditorKit
public EditorKit getEditorKit(JTextComponent tc)
获取用户界面的EditorKit。- Specified by:
-
getEditorKit在TextUI - 参数
-
tc- 安装此UI的文本组件 - 结果
- 编辑功能
- 另请参见:
-
TextUI.getEditorKit(javax.swing.text.JTextComponent)
-
getRootView
public View getRootView(JTextComponent tc)
通过分配可以遍历的关联文本组件(即层次结构的根)来获取视图,以确定模型在空间上的表示方式。注意:视图层次结构可以从根视图中遍历,其他的事情也可以完成。 以这种方式完成的事情不能通过TextUI进行简单的方法调用来保护。 因此,存在并发性的正确操作必须由调用此方法的任何逻辑排列!
- Specified by:
-
getRootView在TextUI - 参数
-
tc- 安装此UI的文本组件 - 结果
- 风景
- 另请参见:
-
TextUI.getRootView(javax.swing.text.JTextComponent)
-
getToolTipText
public String getToolTipText(JTextComponent t, Point pt)
返回要用作传入位置的工具提示的字符串。 这将转发该方法到根视图。- 重写:
-
getToolTipText在TextUI - 参数
-
t- 安装此UI的文本组件 -
pt- 一个Point指定要获取工具提示的位置 - 结果
-
一个
String包含工具提示 - 从以下版本开始:
- 1.4
- 另请参见:
-
JTextComponent.getToolTipText(java.awt.event.MouseEvent),View.getToolTipText(float, float, java.awt.Shape)
-
create
public View create(Element elem)
创建元素的视图。 如果一个子类希望直接实现生产视图的工厂,应该重新实现这种方法。 默认情况下,它只返回null,表示无法表示元素。- Specified by:
-
create在接口ViewFactory - 参数
-
elem- 元素 - 结果
- 风景
- 另请参见:
-
View
-
-