- java.lang.Object
-
- javax.swing.plaf.ComponentUI
-
- javax.swing.plaf.TextUI
-
- javax.swing.plaf.basic.BasicTextUI
-
- 实现的所有接口
-
ViewFactory
- 已知直接子类:
-
BasicEditorPaneUI
,BasicTextAreaUI
,BasicTextFieldUI
,DefaultTextUI
public abstract class BasicTextUIextends TextUIimplements ViewFactory
文本组件外观的基础。 这提供了基本编辑器视图和控制器服务,这些服务在为
JTextComponent
的扩展创建外观时可能很有用。大多数状态作为绑定属性保存在关联的
JTextComponent
中,UI会为各种属性安装默认值。 此默认设置将为所有属性安装一些内容。 通常,LAF实现会做更多。 LAF通常至少会安装密钥绑定。如果与JTextComponent关联的
Document
是AbstractDocument
的子类,则AbstractDocument
还提供一些并发支持。 在任何改变模型的线程和Swing事件线程(预期渲染,模型/视图坐标转换等)之间序列化对View(或View层次结构)的访问。 对根视图的任何访问都应首先获取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开始,
java.beans
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
BasicTextUI.BasicCaret
接口Caret
默认实现。static class
BasicTextUI.BasicHighlighter
接口Highlighter
默认实现。
-
构造方法摘要
构造方法 构造器 描述 BasicTextUI()
创建一个新的UI。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 弃用的方法 变量和类型 方法 描述 View
create(Element elem)
创建元素的视图。View
create(Element elem, int p0, int p1)
创建元素的视图。protected Caret
createCaret()
创建用于插入符的对象。protected Highlighter
createHighlighter()
创建用于添加高光的对象。protected Keymap
createKeymap()
创建用于文本组件的键映射,并将任何必要的绑定安装到其中。void
damageRange(JTextComponent tc, int p0, int p1)
导致负责模型的给定部分的视图部分被重新绘制。void
damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
导致负责模型的给定部分的视图部分被重新绘制。protected JTextComponent
getComponent()
获取与此UI实现关联的文本组件。EditorKit
getEditorKit(JTextComponent tc)
获取UI的EditorKit。protected String
getKeymapName()
获取将为此UI默认安装/使用的键映射的名称。Dimension
getMaximumSize(JComponent c)
获取编辑器组件的最大大小。Dimension
getMinimumSize(JComponent c)
获取编辑器组件的最小大小。Dimension
getPreferredSize(JComponent c)
获取编辑器组件的首选大小。protected abstract String
getPropertyPrefix()
获取用作通过UIManager查找属性的键的名称。View
getRootView(JTextComponent tc)
通过分配可以遍历的关联文本组件(即层次结构的根)来获取视图,以确定模型在空间上的表示方式。String
getToolTipText(JTextComponent t, Point pt)
返回在传入位置用作工具提示的字符串。protected Rectangle
getVisibleEditorRect()
获取赋予根视图的分配。protected void
installDefaults()
初始化组件属性,例如字体,前景,背景,插入颜色,选择颜色,所选文本颜色,禁用文本颜色和边框颜色。protected void
installKeyboardActions()
注册键盘操作。protected void
installListeners()
安装UI的侦听器。void
installUI(JComponent c)
安装组件的UI。protected void
modelChanged()
标志模型的变化。Rectangle
modelToView(JTextComponent tc, int pos)
Rectangle
modelToView(JTextComponent tc, int pos, Position.Bias bias)
void
paint(Graphics g, JComponent c)
绘制界面。protected void
paintBackground(Graphics g)
为视图绘制背景。protected void
paintSafely(Graphics g)
安全地绘制界面,保证模型不会从该线程的视图中更改。protected void
propertyChange(PropertyChangeEvent evt)
在关联的JTextComponent上更改绑定属性时,将调用此方法。protected void
setView(View v)
设置视图层次结构的当前根,并调用invalidate()。protected void
uninstallDefaults()
将尚未显式覆盖的组件属性设置为null
。protected void
uninstallKeyboardActions()
取消注册键盘操作。protected void
uninstallListeners()
卸载UI的侦听器。void
uninstallUI(JComponent c)
卸载组件的UI。void
update(Graphics g, JComponent c)
超类以无法控制的方式绘制背景(即人们可能希望将图像平铺到背景中)。int
viewToModel(JTextComponent tc, Point pt)
int
viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
-
声明方法的类 javax.swing.plaf.TextUI
getNextVisualPositionFrom, getToolTipText2D, modelToView2D, viewToModel2D
-
声明方法的类 javax.swing.plaf.ComponentUI
contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior
-
-
-
-
方法详细信息
-
createCaret
protected Caret createCaret()
创建用于插入符的对象。 默认情况下,会创建一个BasicCaret实例。 可以重新定义此方法以提供实现InputPosition接口或JCaret的子类的其他内容。- 结果
- 插入符号对象
-
createHighlighter
protected Highlighter createHighlighter()
创建用于添加高光的对象。 默认情况下,会创建BasicHighlighter的实例。 可以重新定义此方法以提供实现Highlighter接口或DefaultHighlighter子类的其他方法。- 结果
- 荧光笔
-
getKeymapName
protected String getKeymapName()
获取将为此UI默认安装/使用的键映射的名称。 实现此目的是为了根据类名创建名称。 名称是已删除包前缀的类的名称。- 结果
- 名字
-
createKeymap
protected Keymap createKeymap()
创建用于文本组件的键映射,并将任何必要的绑定安装到其中。 默认情况下,keymap在此类TextUI的所有实例之间共享。 keymap具有getKeymapName方法定义的名称。 如果未找到键映射,则使用JTextComponent的DEFAULT_KEYMAP。用于创建键映射的绑定集是使用通过组合
getPropertyPrefix()
方法和字符串.keyBindings
形成的键从UIManager获取的。 该类型预计为JTextComponent.KeyBinding[]
。- 结果
- 键盘图
- 另请参见:
-
getKeymapName()
,JTextComponent
-
propertyChange
protected void propertyChange(PropertyChangeEvent evt)
在关联的JTextComponent上更改绑定属性时,将调用此方法。 这是一个钩子,UI实现可能会更改以反映UI如何显示JTextComponent子类的绑定属性。 这实现为什么都不做(即在调用此方法之前处理对JTextComponent本身的属性的响应)。 如果可编辑和/或启用状态发生更改,此实现将更新文本组件的背景。- 参数
-
evt
- 属性更改事件
-
getPropertyPrefix
protected abstract String getPropertyPrefix()
获取用作通过UIManager查找属性的键的名称。 这用作所有标准文本属性的前缀。- 结果
- 名字
-
installDefaults
protected void installDefaults()
初始化组件属性,例如字体,前景,背景,插入颜色,选择颜色,所选文本颜色,禁用文本颜色和边框颜色。 仅当字体,前景和背景属性的当前值为null或UIResource时才设置它们,如果当前值为null,则设置其他属性。
-
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
protected void paintBackground(Graphics g)
为视图绘制背景。 只有在关联组件上的isOpaque()为true时才会调用此方法。 默认设置是绘制组件的背景颜色。- 参数
-
g
- 图形上下文
-
getComponent
protected final JTextComponent getComponent()
获取与此UI实现关联的文本组件。 在安装ui之前,这将为null。- 结果
- 编辑器组件
-
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
或实例为UIResource
时,才会设置这些属性。 - 附加到编辑器和模型。 如果没有模型,则创建默认模型。
- 创建用于表示模型的视图工厂和视图层次结构。
- 重写:
-
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在渲染背景时也不是线程安全的,尽管这不是默认渲染的问题。
- 重写:
-
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)
获取编辑器组件的最小大小。- 重写:
-
getMinimumSize
在类ComponentUI
- 参数
-
c
- 编辑器组件 - 结果
- 尺寸
- 另请参见:
-
JComponent.getMinimumSize()
,LayoutManager.minimumLayoutSize(java.awt.Container)
,ComponentUI.getPreferredSize(javax.swing.JComponent)
-
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
Deprecated.将模型中的给定位置转换为视图坐标系中的位置。 组件必须具有非零正大小才能计算此转换。- 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
Deprecated.将模型中的给定位置转换为视图坐标系中的位置。 组件必须具有非零正大小才能计算此转换。- Specified by:
-
modelToView
在类TextUI
- 参数
-
tc
- 安装此UI的文本组件 -
pos
- 要翻译的模型中的本地位置> = 0 -
bias
- 该职位的偏见 - 结果
- 坐标为矩形,如果未绘制模型,则为null
- 异常
-
BadLocationException
- 如果给定位置不代表关联文档中的有效位置 - 另请参见:
-
TextUI.modelToView(javax.swing.text.JTextComponent, int)
-
viewToModel
@Deprecated(since="9")public int viewToModel(JTextComponent tc, Point pt)
Deprecated.将视图坐标系中的给定位置转换为模型中最近的代表位置。 组件必须具有非零正大小才能计算此转换。- 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)
Deprecated.将视图坐标系中的给定位置转换为模型中最近的代表位置。 组件必须具有非零正大小才能计算此转换。- Specified by:
-
viewToModel
在TextUI
类中 - 参数
-
tc
- 安装此UI的文本组件 -
pt
- 要翻译的视图中的位置。 这应该与鼠标事件在同一坐标系中。 -
biasReturn
- 通过此方法填写以指示给定的点是否更接近模型中的上一个或下一个字符 - 结果
- 从文档开头的偏移量> = 0,如果组件尚未具有正尺寸,则为-1。
- 另请参见:
-
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
-
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)
获取UI的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
指定要获取工具提示的位置 - 结果
- a
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
-
-