|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object javax.swing.plaf.ComponentUI javax.swing.plaf.TextUI javax.swing.plaf.basic.BasicTextUI
public abstract class BasicTextUI
此类是文本组件外观的基础。它提供基本的编辑器视图和控制器服务,在为 JTextComponent
的扩展类创建外观时非常有用。
大多数状态作为绑定 (bound) 属性保存在关联的 JTextComponent
中,UI 为各种属性安装默认值。此默认值将为所有属性安装某些内容。但是,通常 LAF 实现所做的不止如此。LAF 一般至少会安装键绑定。
如果与 JTextComponent 关联的 Document
是 AbstractDocument
的子类,则此类还将提供某些并发支持。在任一更改模型的线程与 Swing 事件线程(希望用来呈现、进行模型/视图坐标转换等)之间,对 View(或 View 层次结构)的访问都是序列化的。对根视图的任何访问首先应该获取一个 AbstractDocument 上的读锁 (read-lock),并在 finally 代码块中释放该锁。
要定义的一个重要方法是 getPropertyPrefix()
方法,该方法作为从 UIManager 获取默认值的键的基础。字符串应该反映 TextUI(例如,TextField、TextArea 等)的类型,并且不带名称的特定 LAF 部分(例如,Metal、Motif 等)。
要构建模型的视图,可以使用以下策略之一。
create(javax.swing.text.Element)
方法。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 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 上有一个绑定属性更改时,此方法被调用。 |
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, getBaseline, getBaselineResizeBehavior |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public BasicTextUI()
方法详细信息 |
---|
protected Caret createCaret()
protected Highlighter createHighlighter()
protected String getKeymapName()
protected Keymap createKeymap()
用于创建 keymap 的绑定集从 UIManager 获取,方法是使用通过组合 getPropertyPrefix()
方法和字符串 .keyBindings
而形成的键。期望的类型为 JTextComponent.KeyBinding[]
。
getKeymapName()
,
JTextComponent
protected void propertyChange(PropertyChangeEvent evt)
evt
- 属性更改事件protected abstract String getPropertyPrefix()
protected void installDefaults()
uninstallDefaults()
,
installUI(javax.swing.JComponent)
protected void uninstallDefaults()
installDefaults()
,
uninstallUI(javax.swing.JComponent)
protected void installListeners()
protected void uninstallListeners()
protected void installKeyboardActions()
protected void uninstallKeyboardActions()
protected void paintBackground(Graphics g)
g
- 图形上下文protected final JTextComponent getComponent()
protected void modelChanged()
protected final void setView(View v)
v
- 根视图protected void paintSafely(Graphics g)
g
- 图形上下文public void installUI(JComponent c)
ComponentUI
中的 installUI
c
- 编辑器组件ComponentUI.installUI(javax.swing.JComponent)
public void uninstallUI(JComponent c)
ComponentUI
中的 uninstallUI
c
- 编辑器组件ComponentUI.uninstallUI(javax.swing.JComponent)
public void update(Graphics g, JComponent c)
注: 超类在其背景呈现中也不是线程安全的,尽管在默认呈现中不存在这样的问题。
ComponentUI
中的 update
g
- 将在其中进行绘制的 Graphics
上下文c
- 将绘制的组件;此参数常被忽略,但如果 UI 对象是无状态的并由多个组件共享,则可以使用该参数ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent)
,
JComponent.paintComponent(java.awt.Graphics)
public final void paint(Graphics g, JComponent c)
ComponentUI
中的 paint
g
- 图形上下文c
- 编辑器组件ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
public Dimension getPreferredSize(JComponent c)
ComponentUI
中的 getPreferredSize
c
- 编辑器组件
JComponent.getPreferredSize()
,
LayoutManager.preferredLayoutSize(java.awt.Container)
public Dimension getMinimumSize(JComponent c)
ComponentUI
中的 getMinimumSize
c
- 编辑器组件
JComponent.getMinimumSize()
,
LayoutManager.minimumLayoutSize(java.awt.Container)
,
ComponentUI.getPreferredSize(javax.swing.JComponent)
public Dimension getMaximumSize(JComponent c)
ComponentUI
中的 getMaximumSize
c
- 编辑器组件
JComponent.getMaximumSize()
,
LayoutManager2.maximumLayoutSize(java.awt.Container)
protected Rectangle getVisibleEditorRect()
public Rectangle modelToView(JTextComponent tc, int pos) throws BadLocationException
TextUI
中的 modelToView
tc
- 文本组件,为其安装此 UIpos
- 要转换的模型中的本地位置,该值 >= 0
BadLocationException
- 如果给定位置不表示关联文档中的有效位置TextUI.modelToView(javax.swing.text.JTextComponent, int)
public Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException
TextUI
中的 modelToView
tc
- 文本组件,为其安装此 UIpos
- 要转换的模型中的本地位置,该值 >= 0
BadLocationException
- 如果给定位置不表示关联文档中的有效位置TextUI.modelToView(javax.swing.text.JTextComponent, int)
public int viewToModel(JTextComponent tc, Point pt)
TextUI
中的 viewToModel
tc
- 文本组件,为其安装此 UIpt
- 视图中要转换的位置。此位置应该与鼠标事件在同一坐标系统中。
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
public int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
TextUI
中的 viewToModel
tc
- 为其安装此 UI 的文本组件pt
- 视图中要转换的位置。此位置应该与鼠标事件在同一坐标系统中。biasReturn
- 由此方法填充,以指示给定点是更接近于模型中的前一个字符,还是更接近于模型中的下一个字符
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
public int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) throws BadLocationException
TextUI
中的 getNextVisualPositionFrom
t
- 为其安装此 UI 的文本组件pos
- 要转换的位置,该位置 >= 0b
- 位置的偏差direction
- 以当前位置开始的方向,可以将它们设想为通常出现在键盘上的箭头键。该参数可以是 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH 或 SwingConstants.SOUTHbiasRet
- 包含返回位置偏差的数组
BadLocationException
public void damageRange(JTextComponent tc, int p0, int p1)
TextUI
中的 damageRange
tc
- 文本组件,为其安装此 UIp0
- 范围的开头,该值 >= 0p1
- 范围的结尾,该值 >= p0TextUI.damageRange(javax.swing.text.JTextComponent, int, int)
public void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
TextUI
中的 damageRange
p0
- 范围的起始位置,该值 >= 0p1
- 范围的结束位置,该值 >= p0public EditorKit getEditorKit(JTextComponent tc)
TextUI
中的 getEditorKit
tc
- 文本组件,为其安装此 UI
TextUI.getEditorKit(javax.swing.text.JTextComponent)
public View getRootView(JTextComponent tc)
注:可以从根视图遍历 View 层次结构,其他操作也可以如此。以此方式完成的操作不会像通过 TextUI 的简单方法调用那样受到保护。因此,存在并发操作时必须按照调用此方法的逻辑安排适当的操作!
TextUI
中的 getRootView
tc
- 文本组件,为其安装此 UI
TextUI.getRootView(javax.swing.text.JTextComponent)
public String getToolTipText(JTextComponent t, Point pt)
TextUI
中的 getToolTipText
JTextComponent.getToolTipText(java.awt.event.MouseEvent)
,
View.getToolTipText(float, float, java.awt.Shape)
public View create(Element elem)
ViewFactory
中的 create
elem
- 元素
View
public View create(Element elem, int p0, int p1)
elem
- 元素p0
- 开始偏移量,该值 >= 0p1
- 结束偏移量,该值 >= p0
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。