|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.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 - 文本组件,为其安装此 UI
pos - 要转换的模型中的本地位置,该值 >= 0
BadLocationException - 如果给定位置不表示关联文档中的有效位置
TextUI.modelToView(javax.swing.text.JTextComponent, int)
public Rectangle modelToView(JTextComponent tc,
int pos,
Position.Bias bias)
throws BadLocationException
TextUI 中的
modelToView
tc - 文本组件,为其安装此 UI
pos - 要转换的模型中的本地位置,该值 >= 0
BadLocationException - 如果给定位置不表示关联文档中的有效位置
TextUI.modelToView(javax.swing.text.JTextComponent, int)
public int viewToModel(JTextComponent tc,
Point pt)
TextUI 中的
viewToModel
tc - 文本组件,为其安装此 UI
pt - 视图中要转换的位置。此位置应该与鼠标事件在同一坐标系统中。
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 - 要转换的位置,该位置 >= 0
b - 位置的偏差
direction - 以当前位置开始的方向,可以将它们设想为通常出现在键盘上的箭头键。该参数可以是 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH 或 SwingConstants.SOUTH
biasRet - 包含返回位置偏差的数组
BadLocationException
public void damageRange(JTextComponent tc,
int p0,
int p1)
TextUI 中的
damageRange
tc - 文本组件,为其安装此 UI
p0 - 范围的开头,该值 >= 0
p1 - 范围的结尾,该值 >= p0
TextUI.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 - 范围的起始位置,该值 >= 0
p1 - 范围的结束位置,该值 >= p0
public 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 - 开始偏移量,该值 >= 0
p1 - 结束偏移量,该值 >= p0
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。