javax.swing
Class JEditorPanejava.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.text.JTextComponent | +--javax.swing.JEditorPane
- All Implemented Interfaces:
- Accessible, ImageObserver, MenuContainer, Scrollable, Serializable
- 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.
For the keyboard keys used by this component in the standard Look and Feel (L&F) renditions, see the JEditorPane key assignments.
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(); } } } } }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: 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.
Nested Class Summary
protected class JEditorPane.AccessibleJEditorPane
This class implements accessibility support for the JEditorPane class.protected class JEditorPane.AccessibleJEditorPaneHTML
This class provides support for AccessibleHypertext, and is used in instances where the EditorKit installed in this JEditorPane is an instance of HTMLEditorKit.protected class JEditorPane.JEditorPaneAccessibleHypertextSupport
What's returned by AccessibleJEditorPaneHTML.getAccessibleText.
Nested classes inherited from class javax.swing.text.JTextComponent JTextComponent.KeyBinding
Nested classes inherited from class javax.swing.JComponent
Nested classes inherited from class java.awt.Container
Nested classes inherited from class java.awt.Component Component.BltBufferStrategy, Component.FlipBufferStrategy
Field Summary
Fields inherited from class javax.swing.text.JTextComponent DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY
Fields inherited from class javax.swing.JComponent accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields inherited from class java.awt.Component BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
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.
Method Summary
void addHyperlinkListener(HyperlinkListener listener)
Adds a hyperlink listener for notification of any changes, for example when a link is selected and entered.protected EditorKit createDefaultEditorKit()
Creates the default editor kit (PlainEditorKit) for when the component is first created.static EditorKit createEditorKitForContentType(String type)
Creates a handler for the given type from the default registry of editor kits.void fireHyperlinkUpdate(HyperlinkEvent e)
Notifies all listeners that have registered interest for notification on this event type.AccessibleContext getAccessibleContext()
Gets the AccessibleContext associated with this JEditorPane.String getContentType()
Gets the type of content that this editor is currently set to deal with.EditorKit getEditorKit()
Fetches the currently installed kit for handling content.static String getEditorKitClassNameForContentType(String type)
Returns the currently registered EditorKit class name for the type type.EditorKit getEditorKitForContentType(String type)
Fetches the editor kit to use for the given type of content.HyperlinkListener[] getHyperlinkListeners()
Returns an array of all the HyperLinkListeners added to this JEditorPane with addHyperlinkListener().URL getPage()
Gets the current URL being displayed.Dimension getPreferredSize()
Returns the preferred size for the JEditorPane.boolean getScrollableTracksViewportHeight()
Returns true if a viewport should always force the height of this Scrollable to match the height of the viewport.boolean getScrollableTracksViewportWidth()
Returns true if a viewport should always force the width of this Scrollable to match the width of the viewport.protected InputStream getStream(URL page)
Fetches a stream for the given URL, which is about to be loaded by the setPage method.String getText()
Returns the text contained in this TextComponent in terms of the content type of this editor.String getUIClassID()
Gets the class ID for the UI.protected String paramString()
Returns a string representation of this JEditorPane.void read(InputStream in, Object desc)
This method initializes from a stream.static void registerEditorKitForContentType(String type, String classname)
Establishes the default bindings of type to classname.static void registerEditorKitForContentType(String type, String classname, ClassLoader loader)
Establishes the default bindings of type to classname.void removeHyperlinkListener(HyperlinkListener listener)
Removes a hyperlink listener.void replaceSelection(String content)
Replaces the currently selected content with new content represented by the given string.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).void setContentType(String type)
Sets the type of content that this editor handles.void setEditorKit(EditorKit kit)
Sets the currently installed kit for handling content.void setEditorKitForContentType(String type, EditorKit k)
Directly sets the editor kit to use for the given type.void setPage(String url)
Sets the current URL being displayed.void setPage(URL page)
Sets the current URL being displayed.void setText(String t)
Sets the text of this TextComponent to the specified content, which is expected to be in the format of the content type of this editor.