所有类


javax.swing.plaf.basic
类 BasicTextUI

java.lang.Object
  继承者 javax.swing.plaf.ComponentUI
      继承者 javax.swing.plaf.TextUI
          继承者 javax.swing.plaf.basic.BasicTextUI
所有已实现的接口:
ViewFactory
直接已知子类:
BasicEditorPaneUI, BasicTextAreaUI, BasicTextFieldUI, DefaultTextUI

public abstract class BasicTextUI
   
   
   
   
extends TextUI
implements ViewFactory

此类是文本组件外观的基础。它提供基本的编辑器视图和控制器服务,在为 JTextComponent 的扩展类创建外观时非常有用。

大多数状态作为 bound 属性保存在关联的 JTextComponent 中,UI 为各种属性安装默认值。此默认值将为所有属性安装某些内容。但是,通常 LAF 实现所做的不止如此。LAF 一般至少会安装键绑定。

如果与 JTextComponent 关联的 DocumentAbstractDocument 的子类,则此类还将提供某些并发支持。在任一更改模型的线程与 Swing 事件线程(希望用来呈现、进行模型/视图坐标转换等)之间,对 View(或 View 层次结构)的访问都是序列化的。对根视图的任何访问首先应该获取一个 AbstractDocument 上的读锁 (read-lock),并在 finally 代码块中释放该锁。

要定义的一个重要方法是 getPropertyPrefix() 方法,该方法可以作为从 UIManager 获取默认值的键的基础。字符串应该反映 TextUI(例如,TextField、TextArea 等)的类型,并且不带名称的特定 LAF 部分(例如,Metal、Motif 等)。

要构建模型的视图,可以使用以下策略之一。

  1. 一种策略是简单地重新定义 UI 中的 ViewFactory 接口。默认情况下,此 UI 本身充当 View 实现的工厂。这对于简单工厂很有用。要做到这一点,需要重新实现 create(javax.swing.text.Element) 方法。
  2. 创建较复杂的文档类型的常见策略是让 EditorKit 实现返回一个工厂。因为 EditorKit 绑定了维护文档类型所需的全部内容,所以工厂通常是它的一个重要部分,应该由 EditorKit 实现生成。
  3. 创建较复杂的类型还有一种较为不常见的方式,就是让 UI 实现为工厂创建一个单独的对象。要做到这一点,应该重新实现 #createViewFactory 方法以返回某个工厂。

警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder


嵌套类摘要
static classBasicTextUI.BasicCaret
           
static classBasicTextUI.BasicHighlighter
           
 
构造方法摘要
BasicTextUI()
          创建新的 UI。
 
方法摘要
 Viewcreate(Element elem)
          创建元素的视图。
 Viewcreate(Element elem, int p0, int p1)
          创建元素的视图。
protected  CaretcreateCaret()
          创建用于插入符的对象。
protected  HighlightercreateHighlighter()
          创建用于添加突出显示的对象。
protected  KeymapcreateKeymap()
          创建用于文本组件的 keymap,并在其中安装必需的绑定。
 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)
          获取 UI 的 EditorKit。
protected  StringgetKeymapName()
          获取默认情况下为此 UI 安装或用于此 UI 的 keymap 的名称。
 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)
          获取分配了相关文本组件(即层次结构的根)的 View,可通过遍历该视图确定模型在空间中的表示形式。
 StringgetToolTipText(JTextComponent t, Point pt)
          返回在传入位置上用作工具提示的字符串。
protected  RectanglegetVisibleEditorRect()
          获取给出根 View 的分配。
protected  voidinstallDefaults()
          初始化组件属性,例如,字体、前景、背景、插入符颜色、选择颜色、所选文本颜色、禁用文本颜色,以及边框颜色。
protected  voidinstallKeyboardActions()
           
protected  voidinstallListeners()
          安装 UI 的侦听器。
 voidinstallUI(JComponent c)
          安装组件的 UI。
protected  voidmodelChanged()
          标志模型更改。
 RectanglemodelToView(JTextComponent tc, int pos)
          将模型中的给定位置转换成视图坐标系统中的某一个位置。
 RectanglemodelToView(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)
          超类以无法控制的方式绘制背景(即有人可能希望将图像平铺在背景中)。
 intviewToModel(JTextComponent tc, Point pt)
          将视图坐标系统中的给定位置转换成模型中最有代表性的位置。
 intviewToModel(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 时设置。

另请参见:
uninstallDefaults(), installUI(javax.swing.JComponent)