| JavaTM 2 Platform Std. Ed. v1.6.0
javax.swing
Class JEditorPane
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.text.JTextComponent
javax.swing.JEditorPane
- All Implemented Interfaces:
- ImageObserver, MenuContainer, Serializable, Accessible, Scrollable
- Direct Known Subclasses:
- JTextPane
public class JEditorPane - extends JTextComponent
A text component to edit various kinds of content.
You can find how-to information and examples of using editor panes in
Using Text Components,
a section in The Java Tutorial.
This component uses implementations of the
EditorKit to accomplish its behavior. It effectively
morphs into the proper kind of text editor for the kind
of content it is given. The content type that editor is bound
to at any given time is determined by the EditorKit currently
installed. If the content is set to a new URL, its type is used
to determine the EditorKit that should be used to
load the content.
By default, the following types of content are known:
- text/plain
- Plain text, which is the default the type given isn't
recognized. The kit used in this case is an extension of
DefaultEditorKit that produces a wrapped plain text view.
- text/html
- HTML text. The kit used in this case is the class
javax.swing.text.html.HTMLEditorKit
which provides HTML 3.2 support.
- text/rtf
- RTF text. The kit used in this case is the class
javax.swing.text.rtf.RTFEditorKit
which provides a limited support of the Rich Text Format.
There are several ways to load content into this component.
-
The
setText method can be used to initialize
the component from a string. In this case the current
EditorKit will be used, and the content type will be
expected to be of this type.
-
The
read method can be used to initialize the
component from a Reader. Note that if the content type is HTML,
relative references (e.g. for things like images) can't be resolved
unless the <base> tag is used or the Base property
on HTMLDocument is set.
In this case the current EditorKit will be used,
and the content type will be expected to be of this type.
-
The
setPage method can be used to initialize
the component from a URL. In this case, the content type will be
determined from the URL, and the registered EditorKit
for that content type will be set.
Some kinds of content may provide hyperlink support by generating
hyperlink events. The HTML EditorKit will generate
hyperlink events if the JEditorPane is not editable
(JEditorPane.setEditable(false); has been called).
If HTML frames are embedded in the document, the typical response would be
to change a portion of the current document. The following code
fragment is a possible hyperlink listener implementation, that treats
HTML frame events specially, and simply displays any other activated
hyperlinks.
class Hyperactive implements HyperlinkListener {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
JEditorPane pane = (JEditorPane) e.getSource();
if (e instanceof HTMLFrameHyperlinkEvent) {
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
HTMLDocument doc = (HTMLDocument)pane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
} else {
try {
pane.setPage(e.getURL());
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
}
For information on customizing how text/html is rendered please see
W3C_LENGTH_UNITS and HONOR_DISPLAY_PROPERTIES
Culturally dependent information in some documents is handled through
a mechanism called character encoding. Character encoding is an
unambiguous mapping of the members of a character set (letters, ideographs,
digits, symbols, or control functions) to specific numeric code values. It
represents the way the file is stored. Example character encodings are
ISO-8859-1, ISO-8859-5, Shift-jis, Euc-jp, and UTF-8. When the file is
passed to an user agent (JEditorPane) it is converted to
the document character set (ISO-10646 aka Unicode).
There are multiple ways to get a character set mapping to happen
with JEditorPane.
-
One way is to specify the character set as a parameter of the MIME
type. This will be established by a call to the
setContentType method. If the content
is loaded by the setPage method the content
type will have been set according to the specification of the URL.
It the file is loaded directly, the content type would be expected to
have been set prior to loading.
-
Another way the character set can be specified is in the document itself.
This requires reading the document prior to determining the character set
that is desired. To handle this, it is expected that the
EditorKit.read operation throw a
ChangedCharSetException which will
be caught. The read is then restarted with a new Reader that uses
the character set specified in the ChangedCharSetException
(which is an IOException).
- Newlines
-
For a discussion on how newlines are handled, see
DefaultEditorKit.
Warning: Swing is not thread safe. For more
information see Swing's Threading
Policy.
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 JavaBeansTM
has been added to the java.beans package.
Please see XMLEncoder.
|
Field Summary |
static String |
HONOR_DISPLAY_PROPERTIES
Key for a client property used to indicate whether
the default font and foreground color from the component are
used if a font or foreground color is not specified in the styled
text. |
static String |
W3C_LENGTH_UNITS
Key for a client property used to indicate whether
w3c compliant length units are used for html rendering. |
|
Constructor Summary |
JEditorPane()
Creates a new JEditorPane. |
JEditorPane(String url)
Creates a JEditorPane based on a string containing
a URL specification. |
JEditorPane(String type,
String text)
Creates a JEditorPane that has been initialized
to the given text. |
JEditorPane(URL initialPage)
Creates a JEditorPane based on a specified URL for input. |
| Methods inherited from class javax.swing.text.JTextComponent |
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getActions, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, moveCaretPosition, paste, print, print, print, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDocument, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setUI, updateUI, viewToModel, write |
| Methods inherited from class javax.swing.JComponent |
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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 |
| Methods inherited from class 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 |
| Methods inherited from class 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 |
W3C_LENGTH_UNITS
public static final String W3C_LENGTH_UNITS
- Key for a client property used to indicate whether
w3c compliant length units are used for html rendering.
By default this is not enabled; to enable
it set the client property with this name
to Boolean.TRUE.
- Since:
- 1.5
- See Also:
- Constant Field Values
HONOR_DISPLAY_PROPERTIES
public static final String HONOR_DISPLAY_PROPERTIES
- Key for a client property used to indicate whether
the default font and foreground color from the component are
used if a font or foreground color is not specified in the styled
text.
The default varies based on the look and feel;
to enable it set the client property with
this name to Boolean.TRUE.
- Since:
- 1.5
- See Also:
- Constant Field Values
JEditorPane
public JEditorPane()
- Creates a new
JEditorPane.
The document model is set to null.
JEditorPane
public JEditorPane(URL initialPage)
throws IOException
- Creates a
JEditorPane based on a specified URL for input.
- Parameters:
initialPage - the URL
- Throws:
IOException - if the URL is null
or cannot be accessed
JEditorPane
public JEditorPane(String url)
throws IOException
- Creates a
JEditorPane based on a string containing
a URL specification.
- Parameters:
url - the URL
- Throws:
IOException - if the URL is null or
cannot be accessed
JEditorPane
public JEditorPane(String type,
String text)
- Creates a
JEditorPane that has been initialized
to the given text. This is a convenience constructor that calls the
setContentType and setText methods.
- Parameters:
type - mime type of the given texttext - the text to initialize with; may be null
- Throws:
NullPointerException - if the type parameter
is null
addHyperlinkListener
public void addHyperlinkListener(HyperlinkListener listener)
- Adds a hyperlink listener for notification of any changes, for example
when a link is selected and entered.
- Parameters:
listener - the listener
removeHyperlinkListener
public void removeHyperlinkListener(HyperlinkListener listener)
- Removes a hyperlink listener.
- Parameters:
listener - the listener
getHyperlinkListeners
public HyperlinkListener[] getHyperlinkListeners()
- Returns an array of all the
HyperLinkListeners added
to this JEditorPane with addHyperlinkListener().
- Returns:
- all of the
HyperLinkListeners added or an empty
array if no listeners have been added - Since:
- 1.4
fireHyperlinkUpdate
public void fireHyperlinkUpdate(HyperlinkEvent e)
- Notifies all listeners that have registered interest for
notification on this event type. This is normally called
by the currently installed
EditorKit if a content type
that supports hyperlinks is currently active and there
was activity with a link. The listener list is processed
last to first.
- Parameters:
e - the event- See Also:
EventListenerList
setPage
public void setPage(URL page)
throws IOException
- Sets the current URL being displayed. The content type of the
pane is set, and if the editor kit for the pane is
non-
null, then
a new default document is created and the URL is read into it.
If the URL contains and reference location, the location will
be scrolled to by calling the scrollToReference
method. If the desired URL is the one currently being displayed,
the document will not be reloaded. To force a document
reload it is necessary to clear the stream description property
of the document. The following code shows how this can be done:
Document doc = jEditorPane.getDocument();
doc.putProperty(Document.StreamDescriptionProperty, null);
If the desired URL is not the one currently being
displayed, the getStream method is called to
give subclasses control over the stream provided.
This may load either synchronously or asynchronously
depending upon the document returned by the EditorKit.
If the Document is of type
AbstractDocument and has a value returned by
AbstractDocument.getAsynchronousLoadPriority
that is greater than or equal to zero, the page will be
loaded on a separate thread using that priority.
If the document is loaded synchronously, it will be
filled in with the stream prior to being installed into
the editor with a call to setDocument, which
is bound and will fire a property change event. If an
IOException is thrown the partially loaded
document will
be discarded and neither the document or page property
change events will be fired. If the document is
successfully loaded and installed, a view will be
built for it by the UI which will then be scrolled if
necessary, and then the page property change event
will be fired.
If the document is loaded asynchronously, the document
will be installed into the editor immediately using a
call to setDocument which will fire a
document property change event, then a thread will be
created which will begin doing the actual loading.
In this case, the page property change event will not be
fired by the call to this method directly, but rather will be
fired when the thread doing the loading has finished.
It will also be fired on the event-dispatch thread.
Since the calling thread can not throw an IOException
in the event of failure on the other thread, the page
property change event will be fired when the other
thread is done whether the load was successful or not.
- Parameters:
page - the URL of the page
- Throws:
IOException - for a null or invalid
page specification, or exception from the stream being read- See Also:
getPage()
read
public void read(InputStream in,
Object desc)
throws IOException
- This method initializes from a stream. If the kit is
set to be of type
HTMLEditorKit, and the
desc parameter is an HTMLDocument,
then it invokes the HTMLEditorKit to initiate
the read. Otherwise it calls the superclass
method which loads the model as plain text.
- Parameters:
in - the stream from which to readdesc - an object describing the stream
- Throws:
IOException - as thrown by the stream being
used to initialize- See Also:
JTextComponent.read(java.io.Reader, java.lang.Object),
JTextComponent.setDocument(javax.swing.text.Document)
getStream
protected InputStream getStream(URL page)
throws IOException
- Fetches a stream for the given URL, which is about to
be loaded by the
setPage method. By
default, this simply opens the URL and returns the
stream. This can be reimplemented to do useful things
like fetch the stream from a cache, monitor the progress
of the stream, etc.
This method is expected to have the the side effect of
establishing the content type, and therefore setting the
appropriate EditorKit to use for loading the stream.
If this the stream was an http connection, redirects
will be followed and the resulting URL will be set as
the Document.StreamDescriptionProperty so that relative
URL's can be properly resolved.
- Parameters:
page - the URL of the page
- Throws:
IOException
scrollToReference
public void scrollToReference(String reference)
- Scrolls the view to the given reference location
(that is, the value returned by the
UL.getRef
method for the URL being displayed). By default, this
method only knows how to locate a reference in an
HTMLDocument. The implementation calls the
scrollRectToVisible method to
accomplish the actual scrolling. If scrolling to a
reference location is needed for document types other
than HTML, this method should be reimplemented.
This method will have no effect if the component
is not visible.
- Parameters:
reference - the named location to scroll to
getPage
public URL getPage()
- Gets the current URL being displayed. If a URL was
not specified in the creation of the document, this
will return
null, and relative URL's will not be
resolved.
- Returns:
- the URL, or
null if none
setPage
public void setPage(String url)
throws IOException
- Sets the current URL being displayed.
- Parameters:
url - the URL for display
- Throws:
IOException - for a null or invalid URL
specification
getUIClassID
public String getUIClassID()
- Gets the class ID for the UI.
- Overrides:
getUIClassID in class JComponent
- Returns:
- the string "EditorPaneUI"
- See Also:
JComponent.getUIClassID(),
UIDefaults.getUI(javax.swing.JComponent)
createDefaultEditorKit
protected EditorKit createDefaultEditorKit()
- Creates the default editor kit (
PlainEditorKit) for when
the component is first created.
- Returns:
- the editor kit
getEditorKit
public EditorKit getEditorKit()
- Fetches the currently installed kit for handling content.
createDefaultEditorKit is called to set up a default
if necessary.
- Returns:
- the editor kit
getContentType
public final String getContentType()
- Gets the type of content that this editor
is currently set to deal with. This is
defined to be the type associated with the
currently installed
EditorKit.
- Returns:
- the content type,
null if n |