所有类


javax.swing.text
类 JTextComponent

java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 javax.swing.JComponent
              继承者 javax.swing.text.JTextComponent
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable
直接已知子类:
JEditorPane, JTextArea, JTextField

public abstract class JTextComponent
   
   
   
   
extends JComponent
implements Scrollable, Accessible

JTextComponent 是 swing 文本组件的基类。它会试着与 java.awt.TextComponent 类兼容,并且在此理应如此。还提供其他额外灵活性(不包括可插入 UI 和 bean 支持)服务。有关如何使用此类提供的功能的信息,请参阅《The Java Tutorial》中的 General Rules for Using Text Components 一节。

插入符更改
插入符是 swing 文本组件中的可插入对象。将插入符位置和选择的更改通知发送到已向文本组件注册的 CaretListener 接口的实现。如果尚未设置自定义插入符,则该 UI 将安装默认插入符。
默认情况下,该插入符会跟踪在事件指派线程上执行的所有更改,并且如果插入发生在插入符位置或之前,或者移除发生在插入符位置之前,则相应地更新其位置。DefaultCaret 会试着弄清会不会导致 JScrollPane 内的文本组件的滚动。DefaultCaret.setUpdatePolicy(int) 方法可以更改默认的插入符行为。
:不可编辑的文本组件也有插入符,尽管可能不绘制它。

命令
文本组件提供许多可能用于操作组件的命令。这实质上是组件表示其功能的方式。这些都将根据 swing Action 接口使用 TextAction 实现来表示。文本组件支持的命令集合可以使用 getActions() 方法查找。这些操作可以绑定到由按键等激发的键事件上。

文本输入
文本组件支持灵活而且国际化的文本输入,在使用 keymap 和输入法框架的同时维护与 AWT 侦听器模型的兼容性。

Keymap 让应用程序将击键绑定到操作上。为了允许 keymap 在整个多文本组件上共享,它们可以使用扩展 TextAction 的操作。TextAction 可以确定哪个 JTextComponent 最近有或以前有过焦点,并因此成为该操作的执行者(在此情况下,发送到该操作的 ActionEvent 不包含作为其源的目标文本组件)。

input method framework 让文本组件与输入法交互,分隔预处理事件的软件组件,以让用户使用非常有限的几个键盘键输入成千上万个不同的字符。JTextComponent 是该框架的一个活动客户端,因此它可实现与输入法交互的首选用户界面。因此,有些键事件因为受输入法处理而无法到达文本组件,而有些文本输入不是作为键事件而是作为在 InputMethodEvent 内的提交文本到达文本组件的。完整的文本输入是 keyTyped 键事件中的字符和输入法事件中的提交文本的结合。

AWT 侦听器模型让应用程序将事件侦听器附加到组件,以便将事件绑定到操作。Swing 鼓励使用 keymap 替代侦听器,但要通过使用它为侦听器提供获得事件的机会来维护与侦听器的兼容性。

键盘事件和输入法事件通过以下几个阶段进行处理,每个阶段都能使用该事件:

Stage

KeyEvent

InputMethodEvent

1.输入法(在此处生成)
2.焦点管理器
3.注册的键侦听器注册的输入法侦听器
4.在 JTextComponent 中的输入法处理
5.使用当前 keymap 进行 keymap 处理
6.在 JComponent 中进行键盘处理(如加速键、组件导航等)

要维护与侦听键事件但不知道输入法事件的应用程序的兼容性,在阶段 4 中的输入法处理会提供不处理输入法事件的组件的兼容性模式。对于这些组件,可将提交文本转换为 keyTyped 键事件,并在阶段 3 开始的键事件管线中进行处理,而不是在输入法事件管线中处理。

默认情况下,组件将创建一个作为默认 keymap 由所有 JTextComponent 实例共享的 keymap(名为 DEFAULT_KEYMAP)。通常,外观实现将安装一个不同的 keymap,以便把另一个 keymap 中找不到的绑定解析为默认 keymap。该绑定最少包括:

  • 将内容插入打印键编辑器。
  • 使用 backspace 和 del 键移除内容。
  • 前后移动的插入符

模型/视图拆分
文本组件具有模型/视图拆分功能。文本组件会将用于表示模型、视图和控制器的对象拉在一起。文本文档模型可以由充当该模型观察者的其他视图共享(如,多个组件可以共享一个文档)。

该图表显示控制器、文档、事件和 ViewFactory 之间的交互

该模型由 Document 接口定义。此模型应提供灵活的文本存储机制,以在编辑过程中跟踪更改,并且可以扩展为更复杂的模型。该模型接口旨在捕获 SGML(用于表示多种内容的系统)提供的表达式功能。每次修改文档都会以 DocumentEvent 形式将更改的详细信息通知给所有观察者,允许视图与模型保持最新。将此事件发送给实现了 DocumentListener 接口且注册为对正在接受观察的模型感兴趣的观察者。

位置信息
提供确定视图中文本位置的功能。确定此信息有两个方法,modelToView(int)viewToModel(java.awt.Point)

撤消/重复支持
提供对编辑历史机制的支持,以允许进行撤消/重复操作。默认情况下文本组件本身不提供历史缓冲区,但确实提供可以与提供撤消/重复支持的历史缓冲区的 UndoableEdit 记录。该支持由 Document 模型提供,该模型允许用户附加 UndoableEditListener 实现。

线程安全
swing 文本组件对线程安全操作提供一定程度的支持。因为文本组件的可配置性级别高,所以可以超过所提供的保护。该保护主要来自模型,因此 AbstractDocument 的文档会描述提供的假定保护。异步调用的安全方法标记为注释。

换行
有关如果处理换行的讨论,请参阅 DefaultEditorKit

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

另请参见:
Document, DocumentEvent, DocumentListener, Caret, CaretEvent, CaretListener, TextUI, View, ViewFactory

嵌套类摘要
 classJTextComponent.AccessibleJTextComponent
          此类实现 JTextComponent 类的可访问性支持。
static classJTextComponent.KeyBinding
          用于创建键绑定的绑定记录。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
static StringDEFAULT_KEYMAP
          将由所有 JTextComponent 实例共享的默认 keymap,除非这些实例已有另一个 keymap 集合。
static StringFOCUS_ACCELERATOR_KEY
          焦点加速键的 bound 属性名称。
 
从类 javax.swing.JComponent 继承的字段
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
从类 java.awt.Component 继承的字段
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
从接口 java.awt.image.ImageObserver 继承的字段
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
构造方法摘要
JTextComponent()
          创建一个新的 JTextComponent
 
方法摘要
 voidaddCaretListener(CaretListener listener)
          添加插入符侦听器,以便侦听任何插入符的更改通知。
 voidaddInputMethodListener(InputMethodListener l)
          添加指定的输入方法侦听器,接收此组件发出的输入方法事件。
static KeymapaddKeymap(String nm, Keymap parent)
          将一个新 keymap 添加到 keymap 层次结构。
 voidcopy()
          将关联文本模型中当前选定的范围传输到系统剪贴板,并在文本模型中保留内容。
 voidcut()
          将关联文本模型中当前选定的范围传输到系统剪贴板,并从模型中移除内容。
protected  voidfireCaretUpdate(CaretEvent e)
          通知已注册对获得此事件类型通知感兴趣的所有侦听器。
 AccessibleContextgetAccessibleContext()
          获取与此 JTextComponent 关联的 AccessibleContext
 Action[]getActions()
          获取编辑器的命令列表。
 CaretgetCaret()
          获取允许在视图上进行面向文本导航的插入符。
 ColorgetCaretColor()
          获取用于呈现插入符的当前颜色。
 CaretListener[]getCaretListeners()
          返回在此文本组件上已注册的所有插入符侦听器的数组。
 intgetCaretPosition()
          返回文本组件的文本插入符的位置。
 ColorgetDisabledTextColor()
          获取用于呈现选定文本的当前颜色。
 DocumentgetDocument()
          获取与编辑器关联的模型。
 booleangetDragEnabled()
          获取 dragEnabled 属性。
 chargetFocusAccelerator()
          返回将导致接收文本组件获取焦点的加速键。
 HighlightergetHighlighter()
          获取负责进行突出显示的对象。
 InputMethodRequestsgetInputMethodRequests()
          获得输入方法请求处理程序,该处理程序支持此组件输入方法发出的请求。
 KeymapgetKeymap()
          获取当前在此文本组件中活动的 keymap。
static KeymapgetKeymap(String nm)
          获取以前添加到文档中的已命名 keymap。
 InsetsgetMargin()
          返回文本组件的边框和它的文本之间的空白。
 NavigationFiltergetNavigationFilter()
          返回 NavigationFilter
 DimensiongetPreferredScrollableViewportSize()
          返回视图组件视口的首选大小。
 intgetScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
          显示逻辑行或列的组件应计算滚动增量,它将根据方向的值完全公开一个行块或列块。
 booleangetScrollableTracksViewportHeight()
          如果视口总是强制此 Scrollable 的高度与视口高度匹配,则返回 true。
 booleangetScrollableTracksViewportWidth()
          如果视口总是强制此 Scrollable 的宽度与视口宽度匹配,则返回 true。
 intgetScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
          显示逻辑行或列的组件应计算滚动增量,它将根据方向的值完全公开一个新的行或列。
 StringgetSelectedText()
          返回此 TextComponent 中包含的选定文本。
 ColorgetSelectedTextColor()
          获取用于呈现选定文本的当前颜色。
 ColorgetSelectionColor()
          获取用于呈现选定的当前颜色。
 intgetSelectionEnd()
          返回选定文本的结束位置。
 intgetSelectionStart()
          返回选定文本的起始位置。
 StringgetText()
          返回此 TextComponent 中包含的文本。
 StringgetText(int offs, int len)
          获取由组件表示的文本部分。
 StringgetToolTipText(MouseEvent event)
          返回用作 event 的工具提示的字符串。
 TextUIgetUI()
          获取此面向文本的编辑器的用户界面工厂。
 booleanisEditable()
          返回指示此 TextComponent 是否可编辑的 boolean。
static voidloadKeymap(Keymap map, JTextComponent.KeyBinding[] bindings, Action[] actions)
           加载带有一组绑定的 keymap。
 RectanglemodelToView(int pos)
          将模型中给定位置转换为视图坐标系统中的位置。
 voidmoveCaretPosition(int pos)
          将插入符移动到新的位置,同时保留最后一次调用 setCaretPosition 之前定义的标记。
protected  StringparamString()
          返回此 JTextComponent 的字符串表示形式。
 voidpaste()
          将系统剪贴板的内容传输到关联的文本模型中。
protected  voidprocessInputMethodEvent(InputMethodEvent e)
          处理组件上发生的输入方法事件,方法是将其指派到任意已注册的 InputMethodListener 对象。
 voidread(Reader in, Object desc)
          根据流进行初始化。
 voidremoveCaretListener(CaretListener listener)
          移除插入符侦听器。
static KeymapremoveKeymap(String nm)
          移除以前添加到文档中的已命名 keymap。
 voidremoveNotify()
          通知此组件它不再有父组件。
 voidreplaceSelection(String content)
          用给定字符串所表示的新内容替换当前选定的内容。
 voidselect(int selectionStart, int selectionEnd)
          选定指定的起始和结束位置之间的文本。
 voidselectAll()
          选择 TextComponent 中的所有文本。
 voidsetCaret(Caret c)
          设置要使用的插入符。
 voidsetCaretColor(Color c)
          设置用于呈现插入符的当前颜色。
 voidsetCaretPosition(int position)
          设置 TextComponent 的文本插入符的位置。
 voidsetComponentOrientation(ComponentOrientation o)
          设置语言敏感的方向,用于排序此组件内的元素或文本。
 voidsetDisabledTextColor(Color c)
          设置用于呈现禁用文本的当前颜色。
 voidsetDocument(Document doc)
          将编辑器与文本文档关联。
 voidsetDragEnabled(boolean b)
          设置 dragEnabled 属性,该属性必须为 true 才能确保启用对此组件的自动拖动处理(拖放操作的第一部分)。
 voidsetEditable(boolean b)
          设置指定的 boolean 变量,以指示此 TextComponent 是否应该为可编辑的。
 voidsetFocusAccelerator(char aKey)
          设置将导致接收的文本组件获取焦点的加速键。
 voidsetHighlighter(Highlighter h)
          设置要使用的轮廓色。
 voidsetKeymap(Keymap map)
          设置用于将事件绑定到操作的 keymap。
 voidsetMargin(Insets m)
          设置组件的边框和它的文本之间的空白。
 voidsetNavigationFilter(NavigationFilter filter)
          设置 NavigationFilter
 voidsetSelectedTextColor(Color c)
          设置用于呈现选定文本的当前颜色。
 voidsetSelectionColor(Color c)
          设置用于呈现选定的当前颜色。
 voidsetSelectionEnd(int selectionEnd)
          将选择结束点设置为指定的位置。
 voidsetSelectionStart(int selectionStart)
          将选定起始点设置为指定的位置。
 voidsetText(String t)
          将此 TextComponent 文本设置为指定文本。
 voidsetUI(TextUI ui)
          设置此面向文本的编辑器的用户界面工厂。
 voidupdateUI()
          重新加载可插入的 UI。
 intviewToModel(Point pt)
          将视图坐标系统中的给定位置转换为模型中最具代表性的位置。
 voidwrite(Writer out)
          将模型的内容存储到给定的流中。
 
从类 javax.swing.JComponent 继承的方法
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
从类 java.awt.Container 继承的方法
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
从类 java.awt.Component 继承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

FOCUS_ACCELERATOR_KEY

public static final String FOCUS_ACCELERATOR_KEY
焦点加速键的 bound 属性名称。

另请参见:
常量字段值

DEFAULT_KEYMAP

public static final String DEFAULT_KEYMAP
将由所有 JTextComponent 实例共享的默认 keymap,除非这些实例已有另一个 keymap 集合。

另请参见:
常量字段值
构造方法详细信息

JTextComponent

public JTextComponent()
创建一个新的 JTextComponent。建立插入符事件的侦听器,并安装可插入的 UI。将组件标记为可编辑状态。不使用任何布局管理器,因为布局受文本的视图子系统管理。文档模型被设置为 null

方法详细信息

getUI

public TextUI getUI()
获取此面向文本的编辑器的用户界面工厂。

返回:
工厂

setUI

public void setUI(TextUI ui)
设置此面向文本的编辑器的用户界面工厂。

参数:
ui - 工厂

updateUI

public void updateUI()
重新加载可插入的 UI。用于获取新界面的键是 getUIClassID()。该 UI 的类型是 TextUI。设置该 UI 之后调用 invalidate

覆盖:
JComponent 中的 updateUI
另请参见:
JComponent.setUI(javax.swing.plaf.ComponentUI), UIManager.getLookAndFeel(), UIManager.getUI(javax.swing.JComponent)

addCaretListener

public void addCaretListener(CaretListener listener)
添加插入符侦听器,以便侦听任何插入符的更改通知。

参数:
listener - 要添加的侦听器
另请参见:
CaretEvent

removeCaretListener

public void removeCaretListener(CaretListener listener)
移除插入符侦听器。

参数:
listener - 要移除的侦听器
另请参见:
CaretEvent

getCaretListeners

public CaretListener[] getCaretListeners()
返回在此文本组件上已注册的所有插入符侦听器的数组。

返回:
组件的所有 CaretListener;如果当前没有注册任何插入符侦听器,则返回一个空数组
从以下版本开始:
1.4
另请参见:
addCaretListener(javax.swing.event.CaretListener), removeCaretListener(javax.swing.event.CaretListener)