|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.swing.plaf.basic
类 BasicTextUI
java.lang.Object javax.swing.plaf.ComponentUI javax.swing.plaf.TextUI javax.swing.plaf.basic.BasicTextUI
- 所有已实现的接口:
- ViewFactory
-
public abstract class BasicTextUI
- extends TextUI
- implements ViewFactory
此类是文本组件外观的基础。它提供基本的编辑器视图和控制器服务,在为 JTextComponent
的扩展类创建外观时非常有用。
大多数状态作为 bound 属性保存在关联的 JTextComponent
中,UI 为各种属性安装默认值。此默认值将为所有属性安装某些内容。但是,通常 LAF 实现所做的不止如此。LAF 一般至少会安装键绑定。
如果与 JTextComponent 关联的 Document
是 AbstractDocument
的子类,则此类还将提供某些并发支持。在任一更改模型的线程与 Swing 事件线程(希望用来呈现、进行模型/视图坐标转换等)之间,对 View(或 View 层次结构)的访问都是序列化的。对根视图的任何访问首先应该获取一个 AbstractDocument 上的读锁 (read-lock),并在 finally 代码块中释放该锁。
要定义的一个重要方法是 getPropertyPrefix()
方法,该方法可以作为从 UIManager 获取默认值的键的基础。字符串应该反映 TextUI(例如,TextField、TextArea 等)的类型,并且不带名称的特定 LAF 部分(例如,Metal、Motif 等)。
要构建模型的视图,可以使用以下策略之一。
- 一种策略是简单地重新定义 UI 中的 ViewFactory 接口。默认情况下,此 UI 本身充当 View 实现的工厂。这对于简单工厂很有用。要做到这一点,需要重新实现
create(javax.swing.text.Element)
方法。 - 创建较复杂的文档类型的常见策略是让 EditorKit 实现返回一个工厂。因为 EditorKit 绑定了维护文档类型所需的全部内容,所以工厂通常是它的一个重要部分,应该由 EditorKit 实现生成。
- 创建较复杂的类型还有一种较为不常见的方式,就是让 UI 实现为工厂创建一个单独的对象。要做到这一点,应该重新实现
#createViewFactory
方法以返回某个工厂。
警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
嵌套类摘要 | |
---|---|
static class |
BasicTextUI.BasicCaret |
static class |
BasicTextUI.BasicHighlighter |
构造方法摘要 | |
---|---|
BasicTextUI() 创建新的 UI。 |
方法摘要 | |
---|---|
View |
create(Element elem) 创建元素的视图。 |
View |
create(Element elem, int p0, int p1) 创建元素的视图。 |
protected Caret |
createCaret() 创建用于插入符的对象。 |
protected Highlighter |
createHighlighter() 创建用于添加突出显示的对象。 |
protected Keymap |
createKeymap() 创建用于文本组件的 keymap,并在其中安装必需的绑定。 |
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 安装或用于此 UI 的 keymap 的名称。 |
Dimension |
getMaximumSize(JComponent c) 获取编辑器组件的最大大小。 |
Dimension |
getMinimumSize(JComponent c) 获取编辑器组件的最小大小。 |
int |
getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) 提供某种方法,以确定下一个可以放置插入符的可见表示模型位置。 |
Dimension |
getPreferredSize(JComponent c) 获取编辑器组件的首选大小。 |
protected abstract String |
getPropertyPrefix() 获取通过 UIManager 查找属性时用作键的名称。 |
View |
getRootView(JTextComponent tc) 获取分配了相关文本组件(即层次结构的根)的 View,可通过遍历该视图确定模型在空间中的表示形式。 |
String |
getToolTipText(JTextComponent t, Point pt) 返回在传入位置上用作工具提示的字符串。 |
protected Rectangle |
getVisibleEditorRect() 获取给出根 View 的分配。 |
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 上有一个 bound 属性更改时,此方法被调用。 |
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.ComponentUI 继承的方法 |
---|
contains, createUI, getAccessibleChild, getAccessibleChildrenCount |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
BasicTextUI
public BasicTextUI()
- 创建新的 UI。
方法详细信息 |
---|
createCaret
protected Caret createCaret()
- 创建用于插入符的对象。默认情况下创建一个 BasicCaret 的实例。可以重新定义此方法,让它提供实现 InputPosition 接口或 JCaret 子类的一些其他内容。
-
-
- 返回:
- 插入符对象
createHighlighter
protected Highlighter createHighlighter()
- 创建用于添加突出显示的对象。默认情况下创建一个 BasicHighlighter 的实例。可以重新定义此方法,让它提供实现 Highlighter 接口或 DefaultHighlighter 子类的一些其他内容。
-
-
- 返回:
- highlighter
getKeymapName
protected String getKeymapName()
- 获取默认情况下为此 UI 安装或用于此 UI 的 keymap 的名称。实现此方法来基于类名称创建名称。该名称是移除了包前缀的类名称。
-
-
- 返回:
- 名称
createKeymap
protected Keymap createKeymap()
-
创建用于文本组件的 keymap,并在其中安装必需的绑定。默认情况下,keymap 在此 TextUI 类型的所有实例之间共享。keymap 的名称由 getKeymapName 方法定义。如果找不到 keymap,则使用 JTextComponent 的 DEFAULT_KEYMAP。
用于创建 keymap 的绑定集从 UIManager 获取,方法是使用通过组合
getPropertyPrefix()
方法和字符串.keyBindings
而形成的键。期望的类型为JTextComponent.KeyBinding[]
。 -
-
- 返回:
- keymap
- 另请参见:
getKeymapName()
,JTextComponent
propertyChange
protected void propertyChange(PropertyChangeEvent evt)
- 当关联的 JTextComponent 上有一个 bound 属性更改时,此方法被调用。此方法是一个挂钩,UI 实现可以更改它来反映 UI 显示 JTextComponent 子类的 bound 属性的方式。实现此方法并不进行任何操作。(即处理对 JTextComponent 中属性的响应是在调用此方法之前)。
-
-
- 参数:
evt
- 属性更改事件
getPropertyPrefix
protected abstract String getPropertyPrefix()
- 获取通过 UIManager 查找属性时用作键的名称。它会作为所有标准文本属性的前缀。
-
-
- 返回:
- 名称
installDefaults
protected void installDefaults()
- 初始化组件属性,例如,字体、前景、背景、插入符颜色、选择颜色、所选文本颜色、禁用文本颜色,以及边框颜色。仅当字体、前景和背景属性的当前值为 null 或 UIResource 时才设置这些属性,其他属性在当前值为 null 时设置。
-