is new.
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.text.JTextComponent
javax.swing.JEditorPane
public class JEditorPane
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:
There are several ways to load content into this component.
setText
read
setPage
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.
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 JavaBeans TM 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/interfaces inherited from class javax.swing.text. JTextComponent |
|---|
| JTextComponent.AccessibleJTextComponent , JTextComponent.DropLocation , JTextComponent.KeyBinding |
| Nested classes/interfaces inherited from class javax.swing. JComponent |
|---|
| JComponent.AccessibleJComponent |
| Nested classes/interfaces inherited from class java.awt. Container |
|---|
| Container.AccessibleAWTContainer |
| Nested classes/interfaces inherited from class java.awt. Component |
|---|
| Component.AccessibleAWTComponent , Component.BaselineResizeBehavior , Component.BltBufferStrategy , Component.FlipBufferStrategy |
| 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. |
| 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. |
| Methods inherited from class java.lang. Object |
|---|
| clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
| Field Detail |
|---|
public static final String W3C_LENGTH_UNITS
By default this is not enabled; to enable it set the client
property
property
with this name to Boolean.TRUE.
public static final String HONOR_DISPLAY_PROPERTIES
The default varies based on the look and feel; to enable it set the client
property
property
with this name to Boolean.TRUE.
| Constructor Detail |
|---|
public JEditorPane()
public JEditorPane(URL initialPage)
throws IOException
public JEditorPane(String url)
throws IOException
public JEditorPane(String type,
String text)
| Method Detail |
|---|
public void addHyperlinkListener(HyperlinkListener listener)
public void removeHyperlinkListener(HyperlinkListener listener)
public HyperlinkListener[] getHyperlinkListeners()
public void fireHyperlinkUpdate(HyperlinkEvent e)
public void setPage(URL page)
throws IOException
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.
public void read(InputStream in,
Object desc)
throws IOException
protected InputStream getStream(URL page)
throws IOException
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.
public void scrollToReference(String reference)
public URL getPage()
public void setPage(String url)
throws IOException
public String getUIClassID()
protected EditorKit createDefaultEditorKit()
public EditorKit getEditorKit()
public final String getContentType()
public final void setContentType(String type)
If there is a charset definition specified as a parameter of the content type specification, it will be used when loading input streams using the associated EditorKit. For example if the type is specified as text/html; charset=EUC-JP the content will be loaded using the EditorKit registered for text/html and the Reader provided to the EditorKit to load unicode into the document will use the EUC-JP charset for translating to unicode. If the type is not recognized, the content will be loaded using the EditorKit registered for plain text, text/plain.
public void setEditorKit(EditorKit kit)
NOTE: This has the side effect of changing the model, because the EditorKit is the source of how a particular type of content is modeled. This method will cause setDocument to be called on behalf of the caller to ensure integrity of the internal state.
public EditorKit getEditorKitForContentType(String type)
This method can be reimplemented to use some other kind of type registry. This can be reimplemented to use the Java Activation Framework, for example.
public void setEditorKitForContentType(String type,
EditorKit k)
public void replaceSelection(String content)
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
public static EditorKit createEditorKitForContentType(String type)
Once a prototype EditorKit instance is successfully located, it is cloned and the clone is returned.
public static void registerEditorKitForContentType(String type,
String classname)
public static void registerEditorKitForContentType(String type,
String classname,
ClassLoader loader)
public static String getEditorKitClassNameForContentType(String type)
public Dimension getPreferredSize()
public void setText(String t)
This is implemented to remove the contents of the current document, and replace them by parsing the given string using the current EditorKit. This gives the semantics of the superclass by not changing out the model, while supporting the content type currently set on this component. The assumption is that the previous content is relatively small, and that the previous content doesn't have side effects. Both of those assumptions can be violated and cause undesirable results. To avoid this, create a new document, getEditorKit().createDefaultDocument(), and replace the existing Document with the new one. You are then assured the previous Document won't have any lingering state.
An alternative way to load this component with a string would be to create a StringReader and call the read method. In this case the model would be replaced after it was initialized with the contents of the string.
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
public String getText()
public boolean getScrollableTracksViewportWidth()
public boolean getScrollableTracksViewportHeight()
protected String paramString()
public AccessibleContext getAccessibleContext()