JavaTM 2 Platform
Standard Ed. 6

javax.swing.text.html
類別 HTMLEditorKit

java.lang.Object
  繼承者 javax.swing.text.EditorKit
      繼承者 javax.swing.text.DefaultEditorKit
          繼承者 javax.swing.text.StyledEditorKit
              繼承者 javax.swing.text.html.HTMLEditorKit
所有已實作的介面:
Serializable, Cloneable, Accessible

public class HTMLEditorKit
extends StyledEditorKit
implements Accessible

Swing JEditorPane 文本元件通過稱為 EditorKit 的外掛程式機制來支持不同種類別的內容。因為 HTML 是很串流行的內容格式,因此預設提供了某種支持。此類別提供了 HTML version 3.2(帶有某些擴展)的預設支持,並正在向 version 4.0 遷移。不支持 <applet> 標記,但為 <object> 標記提供了某種支持。

提供 HTML EditorKit 有幾個目的,這些目的影響了 HTML 的建模方式。並從基本方法上影響了其設計。

支持編輯
有一點看起來相當明顯,即 JEditorPane 的外掛程式應該提供編輯支持,但實際上需要考慮幾點設計因素。有相當數量的 HTML 文檔沒有正確遵守 HTML 規範。如果要編輯這些文檔,則必須在某種程度上進行標準化,使其具有正確的形式。此外,使用者不希望面對過多的結構編輯,因此使用傳統的文本編輯動作優先於使用 HTML 文檔中精確定義的 HTML 結構。

HTMLDocument 類別提供了 HTML 的建模。其文檔描述了建模 HTML 的細節。編輯支持主要不利用 text 套件。

可擴展的/可伸縮的
為了最大化此工具套件的使用,我們付諸了大量努力使其具有可擴展性。這裡是一些特性。
  1. 解析器是可替換的。預設解析器是基於 DTD 的 Hot Java 解析器。可以使用不同的 DTD,或者可以使用一個完全不同的解析器。要更改解析器,請重新實作 getParser 方法。首次請求預設解析器時動態載入它,因此如果使用了另一個解析器,則永遠不會載入類別檔案。預設解析器在此套件下面一個單獨的套件中,這個包稱為 parser。
  2. 解析器驅動由 HTMLDocument 所提供的 ParserCallback。要更改回調,請創建 HTMLDocument 子類別,並重新實作 createDefaultDocument 方法以返回產生不同 reader 的文檔。reader 控制文檔的結構。雖然在預設情況下 Document 提供了 HTML 支持,但並不妨礙它支持替代元素結構所產生的非 HTML 標記。
  3. 預設的模型視圖是作為 View 實作的層次結構提供的,所以我們可以輕鬆地自定義如何顯示某個特定元素,或者通過提供新的 View 實作來添加新元素型別的功能。預設的視圖集合由 HTMLFactory 類別提供。可以輕鬆地更改此方法,方法是創建 HTMLFactory 的子類別或替換 HTMLFactory 類別,並重新實作 getViewFactory 方法以返回替代的處理器。
  4. View 實作主要是清除保持在視圖中的 CSS 屬性。這就能夠在看似極不相同的相同模型上映射多個視圖。這對於列印是非常有用的。出於顯示目的,對於大多數的 HTML 屬性,要將 HTML 屬性轉換為 CSS 屬性。這有助於使 View 實作更為通用。

非同步載入
較大的文檔涉及大量的解析工作,並需要一定時間來載入。預設情況下,此工具套件產生非同步載入的文檔(如果使用 JEditorPane.setPage 來載入)。這由文檔的一個屬性來控制。這可以通過覆寫 createDefaultDocument 方法來更改。批處理工作由 HTMLDocument.HTMLReader 類別完成。實際的工作由 text 套件中的 DefaultStyledDocumentAbstractDocument 類別完成。

根據當前 LAF 進行自定義
HTML 提供了已知的特性集,但沒有準確指定顯示特徵。Swing 具有其外觀實作的 theme 機制。外觀應該在 HTML 視圖中提供顯示特徵。例如,視力較差的使用者需要高對比度和比典型字體更大的字體。

StyleSheet 類別提供了這種支持。通過設置 EditorKit 上的 StyleSheet 屬性,可以對 HTML 的表示產生很大影響。

無丟失
EditorKit 能夠讀取和保存文檔。通常使用者最希望的是在兩個操作之間沒有資料丟失。HTMLEditorKit 的策略是保存未識別或不必要可見的內容,以便隨後可以寫出它們。因此,HTML 文檔的模型應該套件含讀取文檔時所發現的所有資訊。由於需要支持編輯,因此這在某些方面受到限制(例如有時必須將不正確的文檔標準化)。指導原則是不應該丟失資訊,但可以合成某些資訊來產生更正確的模型,或者重新安排資訊。


巢狀類別摘要
static class HTMLEditorKit.HTMLFactory
          用於建構 HTML 視圖的處理器。
static class HTMLEditorKit.HTMLTextAction
          提供某些便捷方法的抽象 Action,這些便捷方法對於將 HTML 插入現有文檔可能很有用。
static class HTMLEditorKit.InsertHTMLTextAction
          InsertHTMLTextAction 可用於將任意 HTML 字元串插入現有 HTML 文檔。
static class HTMLEditorKit.LinkController
          此類別用於觀察關聯元件並在適當的時候觸發該元件上的超連接事件。
static class HTMLEditorKit.Parser
          解析器要支持的介面。
static class HTMLEditorKit.ParserCallback
          解析結果驅動這些回調方法。
 
從類別 javax.swing.text.StyledEditorKit 繼承的巢狀類別/介面
StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction
 
從類別 javax.swing.text.DefaultEditorKit 繼承的巢狀類別/介面
DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction
 
欄位摘要
static String BOLD_ACTION
          粗體動作標識符
static String COLOR_ACTION
          Color 選擇動作標識符(顏色作為參數傳遞)
static String DEFAULT_CSS
          用於設置標記視圖的預設級聯樣式表 (Cascading Style Sheet) 檔案。
static String FONT_CHANGE_BIGGER
          字體大小增大到下一個值的動作標識符
static String FONT_CHANGE_SMALLER
          字體大小減小到下一個值的動作標識符
static String IMG_ALIGN_BOTTOM
          將圖像底部對齊。
static String IMG_ALIGN_MIDDLE
          將圖像居中對齊。
static String IMG_ALIGN_TOP
          將圖像頂部對齊。
static String IMG_BORDER
          將圖像對齊到邊框。
static String ITALIC_ACTION
          斜體動作標識符
static String LOGICAL_STYLE_ACTION
          邏輯樣式選擇動作標識符(邏輯樣式作為參數傳遞)
static String PARA_INDENT_LEFT
          段落左縮進動作標識符
static String PARA_INDENT_RIGHT
          段落右縮進動作標識符
 
從類別 javax.swing.text.DefaultEditorKit 繼承的欄位
backwardAction, beepAction, beginAction, beginLineAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deleteNextWordAction, deletePrevCharAction, deletePrevWordAction, downAction, endAction, endLineAction, EndOfLineStringProperty, endParagraphAction, endWordAction, forwardAction, insertBreakAction, insertContentAction, insertTabAction, nextWordAction, pageDownAction, pageUpAction, pasteAction, previousWordAction, readOnlyAction, selectAllAction, selectionBackwardAction, selectionBeginAction, selectionBeginLineAction, selectionBeginParagraphAction, selectionBeginWordAction, selectionDownAction, selectionEndAction, selectionEndLineAction, selectionEndParagraphAction, selectionEndWordAction, selectionForwardAction, selectionNextWordAction, selectionPreviousWordAction, selectionUpAction, selectLineAction, selectParagraphAction, selectWordAction, upAction, writableAction
 
建構子摘要
HTMLEditorKit()
          建構 HTMLEditorKit,創建 StyleContext,並載入樣式表。
 
方法摘要
 Object clone()
          創建編輯器工具套件的一個副本。
 Document createDefaultDocument()
          創建一個適合此編輯器型別的未初始化文本存儲模型。
protected  void createInputAttributes(Element element, MutableAttributeSet set)
          將 element 的 AttributeSet 鍵/值複製到 set 中。
 void deinstall(JEditorPane c)
          工具套件從 JEditorPane 移除時調用。
 AccessibleContext getAccessibleContext()
          返回與此編輯器工具套件關聯的 AccessibleContext。
 Action[] getActions()
          獲取編輯器的命令列表。
 String getContentType()
          獲取此工具套件支持的 MIME 型別的資料。
 Cursor getDefaultCursor()
          返回預設鼠標。
 MutableAttributeSet getInputAttributes()
          獲取該樣式編輯動作的輸入屬性。
 Cursor getLinkCursor()
          返回要在超連接上使用的鼠標。
protected  HTMLEditorKit.Parser getParser()
          獲取要用於讀取 HTML 串流的解析器。
 StyleSheet getStyleSheet()
          獲取當前正用於呈現 HTML 元素的樣式集。
 ViewFactory getViewFactory()
          獲取一個適合供由此套件所產生的任何模型來產生視圖的處理器。
 void insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag)
          將 HTML 插入現有文檔。
 void install(JEditorPane c)
          將工具套件安裝到 JEditorPane 中時調用。
 boolean isAutoFormSubmission()
          指示是否自動處理 html 表單提交,或只是觸發 FormSubmitEvent
 void read(Reader in, Document doc, int pos)
          插入來自給定串流的內容。
 void setAutoFormSubmission(boolean isAuto)
          指定是否自動處理 html 表單提交,或只是觸發 FormSubmitEvent
 void setDefaultCursor(Cursor cursor)
          設置預設鼠標。
 void setLinkCursor(Cursor cursor)
          設置要在連接上使用的鼠標。
 void setStyleSheet(StyleSheet s)
          設置要用於呈現各種 HTML 元素的樣式集。
 void write(Writer out, Document doc, int pos, int len)
          以適合此類別內容處理程序的格式,將文檔中的內容寫入給定串流。
 
從類別 javax.swing.text.StyledEditorKit 繼承的方法
getCharacterAttributeRun
 
從類別 javax.swing.text.DefaultEditorKit 繼承的方法
createCaret, read, write
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

DEFAULT_CSS

public static final String DEFAULT_CSS
用於設置標記視圖的預設級聯樣式表 (Cascading Style Sheet) 檔案。

另請參見:
常數欄位值

BOLD_ACTION

public static final String BOLD_ACTION
粗體動作標識符

另請參見:
常數欄位值

ITALIC_ACTION

public static final String ITALIC_ACTION
斜體動作標識符

另請參見:
常數欄位值

PARA_INDENT_LEFT

public static final String PARA_INDENT_LEFT
段落左縮進動作標識符

另請參見:
常數欄位值

PARA_INDENT_RIGHT

public static final String PARA_INDENT_RIGHT
段落右縮進動作標識符

另請參見:
常數欄位值

FONT_CHANGE_BIGGER

public static final String FONT_CHANGE_BIGGER
字體大小增大到下一個值的動作標識符

另請參見:
常數欄位值

FONT_CHANGE_SMALLER

public static final String FONT_CHANGE_SMALLER
字體大小減小到下一個值的動作標識符

另請參見:
常數欄位值

COLOR_ACTION

public static final String COLOR_ACTION
Color 選擇動作標識符(顏色作為參數傳遞)

另請參見:
常數欄位值

LOGICAL_STYLE_ACTION

public static final String LOGICAL_STYLE_ACTION
邏輯樣式選擇動作標識符(邏輯樣式作為參數傳遞)

另請參見:
常數欄位值

IMG_ALIGN_TOP

public static final String IMG_ALIGN_TOP
將圖像頂部對齊。

另請參見:
常數欄位值

IMG_ALIGN_MIDDLE

public static final String IMG_ALIGN_MIDDLE
將圖像居中對齊。

另請參見:
常數欄位值

IMG_ALIGN_BOTTOM

public static final String IMG_ALIGN_BOTTOM
將圖像底部對齊。

另請參見:
常數欄位值

IMG_BORDER

public static final String IMG_BORDER
將圖像對齊到邊框。

另請參見:
常數欄位值
建構子詳細資訊

HTMLEditorKit

public HTMLEditorKit()
建構 HTMLEditorKit,創建 StyleContext,並載入樣式表。

方法詳細資訊

getContentType

public String getContentType()
獲取此工具套件支持的 MIME 型別的資料。此工具套件支持 text/html 型別。

覆寫:
類別 DefaultEditorKit 中的 getContentType
返回:
型別

getViewFactory

public ViewFactory getViewFactory()
獲取一個適合供由此套件所產生的任何模型來產生視圖的處理器。

覆寫:
類別 StyledEditorKit 中的 getViewFactory
返回:
處理器

createDefaultDocument

public Document createDefaultDocument()
創建一個適合此編輯器型別的未初始化文本存儲模型。

覆寫:
類別 StyledEditorKit 中的 createDefaultDocument
返回:
模型

read

public void read(Reader in,
                 Document doc,
                 int pos)
          throws IOException,
                 BadLocationException
插入來自給定串流的內容。如果 doc 是 HTMLDocument 的一個實例,則這將讀取 HTML 3.2 文本。將 HTML 插入非空(null)文檔時必須插入到正文 Element 的內部,如果未插入正文中,則拋出一個異常。當插入非空(null)文檔時,正文外部的所有標記(頭、標題)將被刪除。

覆寫:
類別 DefaultEditorKit 中的 read
參數:
in - 要從其讀取的串流
doc - 插入的目標
pos - 在文檔中放置內容的位置
拋出:
IOException - 如果發生任何 I/O 錯誤
BadLocationException - 如果 pos 代表文檔中的無效位置
RuntimeException - (最終將為 BadLocationException)如果 pos 無效

insertHTML

public void insertHTML(HTMLDocument doc,
                       int offset,
                       String html,
                       int popDepth,
                       int pushDepth,
                       HTML.Tag insertTag)
                throws BadLocationException,
                       IOException
將 HTML 插入現有文檔。

參數:
doc - 內容將要插入的文檔
offset - HTML 插入位置的偏移量
popDepth - 插入前要產生的 ElementSpec.EndTagTypes 的數量
pushDepth - 插入前但產生結束標記之後,應該產生的 ElementSpec.StartTagTypes 的數量(它具有 ElementSpec.JoinNextDirection 方向)
insertTag - 開始插入文檔的首個標記
拋出:
RuntimeException - (最終將為 BadLocationException)如果 pos 無效
BadLocationException
IOException

write

public void write(Writer out,
                  Document doc,
                  int pos,
                  int len)
           throws IOException,
                  BadLocationException
以適合此類別內容處理程序的格式,將文檔中的內容寫入給定串流。

覆寫:
類別 DefaultEditorKit 中的 write
參數:
out - 要寫入的串流
doc - 寫入的源
pos - 在文檔中獲取內容的位置
len - 寫出量
拋出:
IOException - 如果發生任何 I/O 錯誤
BadLocationException - 如果 pos 代表文檔中的無效位置

install

public void install(JEditorPane c)
將工具套件安裝到 JEditorPane 中時調用。

覆寫:
類別 StyledEditorKit 中的 install
參數:
c - JEditorPane

deinstall

public void deinstall(JEditorPane c)
工具套件從 JEditorPane 移除時調用。這可用於取消對任何所關聯偵聽器的註冊。

覆寫:
類別 StyledEditorKit 中的 deinstall
參數:
c - JEditorPane

setStyleSheet

public void setStyleSheet(StyleSheet s)
設置要用於呈現各種 HTML 元素的樣式集。這些樣式是根據 CSS 規範指定的。工具套件所產生的每個文檔將擁有表的一個副本,它可以向此副本添加特定的文檔樣式。預設情況下,所有 HTMLEditorKit 實例共享所指定的 StyleSheet。如果需要,應該重新實作它以便提供更細的粒度。


getStyleSheet

public StyleSheet getStyleSheet()
獲取當前正用於呈現 HTML 元素的樣式集。預設情況下載入 DEFAULT_CSS 所指定的資源,所有 HTMLEditorKit 實例均共享此資源。


getActions

public Action[] getActions()
獲取編輯器的命令列表。此命令列表受父級類別支持,該父級類別是通過樣式操作的本地定義的命令集合擴展的。

覆寫:
類別 StyledEditorKit 中的 getActions
返回:
命令列表

createInputAttributes

protected void createInputAttributes(Element element,
                                     MutableAttributeSet set)
element 的 AttributeSet 鍵/值複製到 set 中。此操作不複製元件、圖標或者元素名稱屬性。子類別可能希望修改此處要複製什麼,不複製什麼。確保首先移除 set 中的所有屬性。

這在插入符移到一個不同位置時調用。

覆寫:
類別 StyledEditorKit 中的 createInputAttributes

getInputAttributes

public MutableAttributeSet getInputAttributes()
獲取該樣式編輯動作的輸入屬性。

覆寫:
類別 StyledEditorKit 中的 getInputAttributes
返回:
屬性集

setDefaultCursor

public void setDefaultCursor(Cursor cursor)
設置預設鼠標。

從以下版本開始:
1.3

getDefaultCursor

public Cursor getDefaultCursor()
返回預設鼠標。

從以下版本開始:
1.3

setLinkCursor

public void setLinkCursor(Cursor cursor)
設置要在連接上使用的鼠標。

從以下版本開始:
1.3

getLinkCursor

public Cursor getLinkCursor()
返回要在超連接上使用的鼠標。

從以下版本開始:
1.3

isAutoFormSubmission

public boolean isAutoFormSubmission()
指示是否自動處理 html 表單提交,或只是觸發 FormSubmitEvent

返回:
如果自動處理 html 表單提交,則返回 true;否則返回 false。
從以下版本開始:
1.5
另請參見:
setAutoFormSubmission(boolean)

setAutoFormSubmission

public void setAutoFormSubmission(boolean isAuto)
指定是否自動處理 html 表單提交,或只是觸發 FormSubmitEvent。預設情況下設置為 true。

從以下版本開始:
1.5
另請參見:
isAutoFormSubmission, FormSubmitEvent

clone

public Object clone()
創建編輯器工具套件的一個副本。

覆寫:
類別 StyledEditorKit 中的 clone
返回:
副本
另請參見:
Cloneable

getParser

protected HTMLEditorKit.Parser getParser()
獲取要用於讀取 HTML 串流的解析器。可以重新實作此方法以提供不同的解析器。預設情況下此實作是動態載入的,以避免載入預設解析器(如果沒有使用它)的開銷。預設解析器是使用 HTML 3.2 DTD 的 HotJava 解析器。


getAccessibleContext

public AccessibleContext getAccessibleContext()
返回與此編輯器工具套件關聯的 AccessibleContext。

指定者:
介面 Accessible 中的 getAccessibleContext
返回:
與此編輯器工具套件關聯的 AccessibleContext
從以下版本開始:
1.4

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only