java可以顯示HTML的組件JEditorPane 說明(轉)


public class JEditorPane extends JTextComponent
 
        

可編輯各種內容的文本組件。有關基礎知識信息和使用編輯器窗格的示例,請參閱 The Java Tutorial 中的 Using Text Components 一節。

此組件使用 EditorKit 的實現來完成其操作。對於給予它的各種內容,它能有效地將其形態變換為適當的文本編輯器種類。該編輯器在任意給定時間的內容類型都由當前已安裝的 EditorKit 確定。如果將內容設置為新的 URL,則使用其類型來確定加載該內容所應使用的 EditorKit

默認情況下,已知下列內容類型:

text/plain
純文本,即無法識別給定的類型時所使用的默認值。在此情況下使用的工具包是 DefaultEditorKit 的擴展,可生成有換行的純文本視圖。
text/html
HTML 文本。在此情況下使用的工具包是類 javax.swing.text.html.HTMLEditorKit,支持 HTML 3.2。
text/rtf
RTF 文本。在此情況下使用的工具包是類 javax.swing.text.rtf.RTFEditorKit,它提供了對多樣化文本格式 (Rich Text Format) 的有限支持。

有多種方式可將內容加載到此組件中。

  1. 可使用 setText 方法來初始化字符串組件。在這種情況下,將使用當前的 EditorKit,且此類型為期望的內容類型。
  2. 可使用 read 方法來初始化 Reader 組件。注意,如果內容類型為 HTML,那么只有使用了 <base> 標記,或者設置了 HTMLDocument 上的 Base 屬性時才能解析相關的引用(例如對於類似圖像等內容)。在這種情況下,將使用當前的 EditorKit,且此類型為期望的內容類型。
  3. 可使用 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_UNITSHONOR_DISPLAY_PROPERTIES

某些文檔中與文化相關的信息是通過一種稱為字符編碼的機制來處理的。字符編碼是字符集的成員(字母、象形文字、數字、符號或控制函數)和具體數字代碼值的明確映射關系。它表示了文件的存儲方式。字符編碼有 ISO-8859-1、ISO-8859-5、Shift-jis、Euc-jp 和 UTF-8。將文件傳遞給用戶代理 (JEditorPane) 時,該文件被轉換為文檔字符集 (ISO-10646 aka Unicode)。

有多種方式可獲得使用 JEditorPane 時所用的字符集映射關系。

  1. 一種方式是將字符集指定為 MIME 類型的參數。通過調用 setContentType 方法來建立此方式。如果通過 setPage 方法加載內容,則其內容類型已根據 URL 的規范進行了設置。如果直接加載文件,則期望在加載前就已設置內容類型。
  2. 指定字符集的另一種方式是在該文檔內指定。這需要在確定所需的字符集之前讀取該文檔。要處理此情況,需要 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。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM