java可以显示HTML的组件JEditorPane 说明(转)
2013-02-07 15:48
337 查看
public class JEditorPane extends JTextComponent
可编辑各种内容的文本组件。有关基础知识信息和使用编辑器窗格的示例,请参阅 The Java Tutorial 中的 Using Text Components 一节。
此组件使用
EditorKit的实现来完成其操作。对于给予它的各种内容,它能有效地将其形态变换为适当的文本编辑器种类。该编辑器在任意给定时间的内容类型都由当前已安装的
EditorKit确定。如果将内容设置为新的 URL,则使用其类型来确定加载该内容所应使用的
EditorKit。
默认情况下,已知下列内容类型:
text/plain纯文本,即无法识别给定的类型时所使用的默认值。在此情况下使用的工具包是
DefaultEditorKit的扩展,可生成有换行的纯文本视图。text/htmlHTML 文本。在此情况下使用的工具包是类
javax.swing.text.html.HTMLEditorKit,支持 HTML 3.2。text/rtfRTF 文本。在此情况下使用的工具包是类
javax.swing.text.rtf.RTFEditorKit,它提供了对多样化文本格式 (Rich Text Format) 的有限支持。
有多种方式可将内容加载到此组件中。
可使用
setText方法来初始化字符串组件。在这种情况下,将使用当前的
EditorKit,且此类型为期望的内容类型。
可使用
read方法来初始化
Reader组件。注意,如果内容类型为 HTML,那么只有使用了 <base> 标记,或者设置了
HTMLDocument上的 Base 属性时才能解析相关的引用(例如对于类似图像等内容)。在这种情况下,将使用当前的
EditorKit,且此类型为期望的内容类型。
可使用
setPage方法来初始化 URL 组件。在这种情况下,将根据该 URL 来确定内容类型,并且设置为该内容类型所注册的
EditorKit。
某些内容类型可能通过生成超链接事件来提供对超链接的支持。如果
JEditorPane是不可编辑的(已调用了
JEditorPane.setEditable(false);),则 HTML
EditorKit将生成超链接事件。如果文档中嵌入了 HTML frame,则典型的响应是更改当前文档的某一部分。以下代码片段是一种可能的超链接侦听器实现,它特殊对待 HTML frame 事件,并且简单地显示其他所有已激活的超链接。
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(); } } } } }
有关自定义如何呈现 text/html 的信息,请参阅
W3C_LENGTH_UNITS和
HONOR_DISPLAY_PROPERTIES
某些文档中与文化相关的信息是通过一种称为字符编码的机制来处理的。字符编码是字符集的成员(字母、象形文字、数字、符号或控制函数)和具体数字代码值的明确映射关系。它表示了文件的存储方式。字符编码有 ISO-8859-1、ISO-8859-5、Shift-jis、Euc-jp 和 UTF-8。将文件传递给用户代理 (
JEditorPane) 时,该文件被转换为文档字符集 (ISO-10646 aka Unicode)。
有多种方式可获得使用
JEditorPane时所用的字符集映射关系。
一种方式是将字符集指定为 MIME 类型的参数。通过调用 setContentType 方法来建立此方式。如果通过 setPage 方法加载内容,则其内容类型已根据 URL 的规范进行了设置。如果直接加载文件,则期望在加载前就已设置内容类型。
指定字符集的另一种方式是在该文档内指定。这需要在确定所需的字符集之前读取该文档。要处理此情况,需要
EditorKit.read 操作抛出将要被捕获的
ChangedCharSetException。然后使用新的 Reader 重新开始该 read 操作,该 Reader 使用
ChangedCharSetException(这是一个
IOException)中所指定的字符集。
换行有关如何处理换行的讨论,请参阅 DefaultEditorKit。
警告: Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在
java.beans包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见
XMLEncoder。
相关文章推荐
- 在页面中,我们经常看到,一个button按钮,如果属标点击,就会触发一个窗口的显示,如果二次点击并可以隐藏,那么如何通过JAVA配合html来实现这一功能呢?
- java截取带html标签的字符串,再把标签补全(保证页面显示效果)
- Android(java)学习笔记138:html嵌入到java显示乱码
- JsSocket,Js+Flex+Java模拟的JsSocket组件使用说明
- java文章显示内容部分(将html转成纯文本)
- 在Java applet中如何显示另外一个HTML页面?
- Ext.form.DisplayField扩展组件:在formpanel中显示html格式的内容
- android中java与js通信(可以用html来做页面,进行交互)
- html embed用法 Embed (一)、基本语法: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等
- java.util.concurrent.CountDownLatch组件说明
- JAVA 文档注释,类的说明,HTML说明文档的生成
- 将java代码生成html并且高亮显示
- java开源的html操作组件
- java中添加了jtable组件,却显示不出来
- vue引入组件无法显示且报错[Vue warn]: Do not use built-in or reserved HTML elements as component id: header
- HTML route点击不同按钮,显示不同内容,可以改变按钮背景颜色
- Java 中的多线程-两种创建方式,定时器的应用,线程的安全问题可以用银行转账来说明
- 在Java applet中如何显示另外一个HTML页面
- 微信小程序image组件binderror使用例子(对应html、js中的onerror) ,图片失效显示默认图片
- JAVA/JSP上传组件 - 我的上传组件-基本说明