JTextComponent
is the base class for swing text
components. It tries to be compatible with the
java.awt.TextComponent
class
where it can reasonably do so. Also provided are other services
for additional flexibility (beyond the pluggable UI and bean
support).
You can find information on how to use the functionality
this class provides in
General Rules for Using Text Components,
a section in The Java Tutorial.
CaretListener
interface that have been registered with the text component.
The UI will install a default caret unless a customized caret
has been set. DefaultCaret
tries to make itself visible which may lead to scrolling
of a text component within JScrollPane
. The default caret
behavior can be changed by the DefaultCaret.setUpdatePolicy
method.
Action
interface,
using the TextAction
implementation.
The set of commands supported by the text component can be
found with the getActions
method. These actions
can be bound to key events, fired from buttons, etc.
A javax.swing.text.Keymap
lets an application bind key
strokes to actions.
In order to allow keymaps to be shared across multiple text components, they
can use actions that extend TextAction
.
TextAction
can determine which JTextComponent
most recently has or had focus and therefore is the subject of
the action (In the case that the ActionEvent
sent to the action doesn't contain the target text component as its source).
The {@extLink imf_overview Input Method Framework}
lets text components interact with input methods, separate software
components that preprocess events to let users enter thousands of
different characters using keyboards with far fewer keys.
JTextComponent
is an active client of
the framework, so it implements the preferred user interface for interacting
with input methods. As a consequence, some key events do not reach the text
component because they are handled by an input method, and some text input
reaches the text component as committed text within an java.awt.event.InputMethodEvent
instead of as a key event.
The complete text input is the combination of the characters in
keyTyped
key events and committed text in input method events.
The AWT listener model lets applications attach event listeners to components in order to bind events to actions. Swing encourages the use of keymaps instead of listeners, but maintains compatibility with listeners by giving the listeners a chance to steal an event by consuming it.
Keyboard event and input method events are handled in the following stages, with each stage capable of consuming the event:
Stage | KeyEvent | InputMethodEvent |
---|---|---|
1. | input methods | (generated here) |
2. | focus manager | |
3. | registered key listeners | registered input method listeners |
4. | input method handling in JTextComponent | |
5. | keymap handling using the current keymap | |
6. | keyboard handling in JComponent (e.g. accelerators, component navigation, etc.) |
To maintain compatibility with applications that listen to key events but are not aware of input method events, the input method handling in stage 4 provides a compatibility mode for components that do not process input method events. For these components, the committed text is converted to keyTyped key events and processed in the key event pipeline starting at stage 3 instead of in the input method event pipeline.
By default the component will create a keymap (named DEFAULT_KEYMAP) that is shared by all JTextComponent instances as the default keymap. Typically a look-and-feel implementation will install a different keymap that resolves to the default keymap for those bindings not found in the different keymap. The minimal bindings include:
The model is defined by the Document
interface.
This is intended to provide a flexible text storage mechanism
that tracks change during edits and can be extended to more sophisticated
models. The model interfaces are meant to capture the capabilities of
expression given by SGML, a system used to express a wide variety of
content.
Each modification to the document causes notification of the
details of the change to be sent to all observers in the form of a
DocumentEvent
which allows the views to stay up to date with the model.
This event is sent to observers that have implemented the
DocumentListener
interface and registered interest with the model being observed.
modelToView
and viewToModel
for determining this information.
UndoableEdit
records that can be used in conjunction
with a history buffer to provide the undo/redo support.
The support is provided by the Document model, which allows
one to attach UndoableEditListener implementations.
AbstractDocument
describes the assumptions of the protection provided.
The methods that are safe to call asynchronously are marked
with comments.
print
methods are provided for basic
document printing. If more advanced printing is needed, use the
getPrintable
method.
Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeans™
has been added to the java.beans
package.
Please see java.beans.XMLEncoder
.
extends
Document, DocumentEvent, DocumentListener, Caret, CaretEvent, CaretListener, TextUI, View, ViewFactory