|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.swing.text.AbstractDocument
javax.swing.text.DefaultStyledDocument
javax.swing.text.html.HTMLDocument
public class HTMLDocument
對 HTML 進行建模的文檔。此模型的目的是支持瀏覽和編輯。因此,預設情況下 HTML 文檔所描述的結構不是精確一致的。預設情況下被建模的元素結構是通過 HTMLDocument.HTMLReader 類別建構的,此類別實作瞭解析器所期望的 HTMLEditorKit.ParserCallback 協議。要更改結構,可以創建 HTMLReader 的子類別,並且重新實作 getReader(int) 方法以返回新的 reader 實作。有關創建預設結構的細節,請參考 HTMLReader 文檔。其目的是使文檔無丟失(non-lossy)(雖然重新產生 HTML 格式可能導致出現不同的格式)。
文檔只對 HTML 建模,並且不嘗試在其中存儲視圖屬性。元素由 StyleContext.NameAttribute 屬性標識,此屬性應該始終有一個標識元素種類別的 HTML.Tag 型別值。某些元素(例如註釋)是合成的。HTMLFactory 使用此屬性來確定要建構哪種視圖。
此文檔支持增量載入。TokenThreshold 屬性控制在試圖更新文檔的元素結構之前要緩衝的解析數量。通過 EditorKit 來設置此屬性,以便子類別可以禁用它。
Base 屬性根據解析哪些相對 URL 來確定 URL。預設情況下,如果屬性值是 URL,則這將是 Document.StreamDescriptionProperty。如果遇到 <BASE> 標記,則基本 URL 將成為該標記所指定的 URL。因為基本 URL 是一個屬性,因此毫無疑問可以直接設置它。
此文檔的預設內容存儲機制是一個間隙緩衝區 (GapContent)。通過使用帶有 Content 實作的建構子,可以提供某些替代方法。
警告:
此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已經在 java.beans 套件添加了對所有 JavaBeansTM 長期存儲的支持。請參閱 XMLEncoder。
| 巢狀類別摘要 | |
|---|---|
class |
HTMLDocument.BlockElement
表示結構性 HTML 塊 的元素。 |
class |
HTMLDocument.HTMLReader
一個 HTML reader,用來載入具有 HTML 元素結構的 HTML 文檔。 |
static class |
HTMLDocument.Iterator
對特定型別的標記進行迭代的迭代器。 |
class |
HTMLDocument.RunElement
表示文本塊的元素,該文本塊具有一個分派給它的 HTML 字元級的屬性集。 |
| 欄位摘要 | |
|---|---|
static String |
AdditionalComments
文檔屬性鍵值。 |
| 從類別 javax.swing.text.DefaultStyledDocument 繼承的欄位 |
|---|
buffer, BUFFER_SIZE_DEFAULT |
| 從類別 javax.swing.text.AbstractDocument 繼承的欄位 |
|---|
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName |
| 從介面 javax.swing.text.Document 繼承的欄位 |
|---|
StreamDescriptionProperty, TitleProperty |
| 建構子摘要 | |
|---|---|
HTMLDocument()
使用預設的緩衝區大小和預設的 StyleSheet 建構 HTML 文檔。 |
|
HTMLDocument(AbstractDocument.Content c,
StyleSheet styles)
建構具有給定內容存儲實作和給定樣式/屬性存儲機制的 HTML 文檔。 |
|
HTMLDocument(StyleSheet styles)
建構具有預設內容存儲實作和指定樣式/屬性存儲機制的 HTML 文檔。 |
|
| 方法摘要 | |
|---|---|
protected void |
create(DefaultStyledDocument.ElementSpec[] data)
替換具有給定元素規範的文檔內容。 |
protected Element |
createBranchElement(Element parent,
AttributeSet a)
創建文檔分支元素,它可以包含其他元素。 |
protected AbstractDocument.AbstractElement |
createDefaultRoot()
創建用於表示預設文檔結構的根元素。 |
protected Element |
createLeafElement(Element parent,
AttributeSet a,
int p0,
int p1)
創建直接表示文本的文檔葉元素(沒有任何子級)。 |
protected void |
fireChangedUpdate(DocumentEvent e)
通知所有需要此事件型別的通知的已註冊偵聽器。 |
protected void |
fireUndoableEditUpdate(UndoableEditEvent e)
通知所有需要此事件型別的通知的已註冊偵聽器。 |
URL |
getBase()
返回解析相對 URL 所根據的位置。 |
Element |
getElement(Element e,
Object attribute,
Object value)
返回 e(它包含具有值 value 的屬性 attribute)的子元素,如果未找到,則返回 null。 |
Element |
getElement(String id)
返回具有給定 id Attribute 的元素。 |
HTMLDocument.Iterator |
getIterator(HTML.Tag t)
獲取指定 HTML 標記的迭代器。 |
HTMLEditorKit.Parser |
getParser()
返回將 HTML 插入現有文檔時所使用的解析器。 |
boolean |
getPreservesUnknownTags()
返回在遇到未知標記時所觀察到的解析器行為。 |
HTMLEditorKit.ParserCallback |
getReader(int pos)
獲取載入帶有 HTML 的文檔時所用解析器的 reader。 |
HTMLEditorKit.ParserCallback |
getReader(int pos,
int popDepth,
int pushDepth,
HTML.Tag insertTag)
返回載入帶有 HTML 的文檔時所用解析器的 reader。 |
StyleSheet |
getStyleSheet()
獲取具有特定於文檔的顯示規則(CSS)的 StyleSheet,其中這些規則是在 HTML 文檔本身中指定的。 |
int |
getTokenThreshold()
獲取在試圖更新文檔元素結構之前要緩衝的標記數。 |
protected void |
insert(int offset,
DefaultStyledDocument.ElementSpec[] data)
批量插入新元素。 |
void |
insertAfterEnd(Element elem,
String htmlText)
將指定為字元串的 HTML 插入給定元素的起始處之後。 |
void |
insertAfterStart(Element elem,
String htmlText)
將指定為字元串的 HTML 插入元素的起始處。 |
void |
insertBeforeEnd(Element elem,
String htmlText)
將指定為字元串的 HTML 插入元素的結尾處。 |
void |
insertBeforeStart(Element elem,
String htmlText)
將指定為字元串的 HTML 插入給定元素的起始處之前。 |
protected void |
insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
AttributeSet attr)
由於插入文本而導致更新文檔的結構。 |
void |
processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
處理 HTML 框架中的文檔所產生的 HyperlinkEvents。 |
void |
setBase(URL u)
設置解析相對 URL 所根據的位置。 |
void |
setInnerHTML(Element elem,
String htmlText)
用指定為 HTML 字元串的內容替換給定元素的子元素。 |
void |
setOuterHTML(Element elem,
String htmlText)
用指定為 HTML 字元串的內容替換父元素中的給定元素。 |
void |
setParagraphAttributes(int offset,
int length,
AttributeSet s,
boolean replace)
設置段落屬性。 |
void |
setParser(HTMLEditorKit.Parser parser)
設置將 html 插入現有文檔的方法所使用的解析器,例如 setInnerHTML 和 setOuterHTML。 |
void |
setPreservesUnknownTags(boolean preservesTags)
確定解析器如何處理未知標記。 |
void |
setTokenThreshold(int n)
設置在試圖更新文檔元素結構之前要緩衝的標記數。 |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 從介面 javax.swing.text.Document 繼承的方法 |
|---|
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render |
| 欄位詳細資訊 |
|---|
public static final String AdditionalComments
| 建構子詳細資訊 |
|---|
public HTMLDocument()
StyleSheet 建構 HTML 文檔。這是 HTMLDocument(Content, StyleSheet) 建構子的一個便捷方法。
public HTMLDocument(StyleSheet styles)
HTMLDocument(Content, StyleSheet) 建構子的一個便捷方法。
styles - 樣式
public HTMLDocument(AbstractDocument.Content c,
StyleSheet styles)
c - 內容的容器styles - 樣式| 方法詳細資訊 |
|---|
public HTMLEditorKit.ParserCallback getReader(int pos)
HTMLDocument.HTMLReader 的一個實例。如果需要,子類別可以重新實作此方法來更改文檔獲取結構的方式。(例如,處理自定義標記,或者從結構上表示字元樣式元素。)
pos - 起始位置
public HTMLEditorKit.ParserCallback getReader(int pos,
int popDepth,
int pushDepth,
HTML.Tag insertTag)
HTMLDocument.HTMLReader 的一個實例。如果需要,子類別可以重新實作此方法來更改文檔獲取結構的方式。(例如,處理自定義標記,或者從結構上表示字元樣式元素。)
這是 getReader(int, int, int, HTML.Tag, TRUE) 的一個便捷方法。
popDepth - 插入前要產生的 ElementSpec.EndTagTypes 的數量pushDepth - 插入前但產生結束標記之後,應該產生的 ElementSpec.StartTagTypes 的數量(它具有 ElementSpec.JoinNextDirection 方向)insertTag - 開始插入文檔的首個標記
public URL getBase()
public void setBase(URL u)
這還將 StyleSheet 的基本 URL 以及文檔的基本 URL 設置為 u。
u - 所需的基本 URL
protected void insert(int offset,
DefaultStyledDocument.ElementSpec[] data)
throws BadLocationException
DefaultStyledDocument 中的 insertoffset - 起始偏移量data - 元素資料
BadLocationException - 如果給定的位置在關聯文檔中不是一個有效位置。
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
AttributeSet attr)
DefaultStyledDocument 中的 insertUpdatechng - 文檔更改的描述attr - 屬性protected void create(DefaultStyledDocument.ElementSpec[] data)
DefaultStyledDocument 中的 createdata - 文檔的新內容
public void setParagraphAttributes(int offset,
int length,
AttributeSet s,
boolean replace)
雖然大多數 Swing 方法不是執行緒安全的,但此方法是執行緒安全的。有關更多資訊,請參閱 How to Use Threads。
StyledDocument 中的 setParagraphAttributesDefaultStyledDocument 中的 setParagraphAttributesoffset - 段落中的偏移量(必須至少為 0)length - 受影響的字元數(必須至少為 0)s - 屬性replace - 是替換現有屬性,還是合併它們public StyleSheet getStyleSheet()
StyleSheet,其中這些規則是在 HTML 文檔本身中指定的。
StyleSheetpublic HTMLDocument.Iterator getIterator(HTML.Tag t)
t - 所請求的 HTML.Tag
IteratorHTML.Tag
protected Element createLeafElement(Element parent,
AttributeSet a,
int p0,
int p1)
HTMLDocument.RunElement 型別的元素。
AbstractDocument 中的 createLeafElementparent - 父元素a - 元素屬性p0 - 該範圍的開始處(必須至少為 0)p1 - 該範圍的結尾處(必須至少為 p0)
protected Element createBranchElement(Element parent,
AttributeSet a)
HTMLDocument.BlockElement 型別的元素。
AbstractDocument 中的 createBranchElementparent - 父元素a - 屬性
protected AbstractDocument.AbstractElement createDefaultRoot()
DefaultStyledDocument 中的 createDefaultRootpublic void setTokenThreshold(int n)
n - 要緩衝的標記數public int getTokenThreshold()
Integer.MAX_VALUE。
public void setPreservesUnknownTags(boolean preservesTags)
preservesTags - 如果應該將未知標記保存到模型中,則為 true,否則刪除這些標記HTML.Tagpublic boolean getPreservesUnknownTags()
HTML.Tagpublic void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
HyperlinkEvents。HyperlinkEvent 型別為 HTMLFrameHyperlinkEvent(正如參數所說明的)。除 HyperlinkEvent 中所包含的典型資訊之外,此事件還包含對應於發生單擊事件的框架的元素(源元素)和目標名稱。目標名稱有 4 個可能值:
HTML.Attribute.SRC 屬性的值,並觸發 ChangedUpdate 事件。
如果目標是 _parent,則它刪除父元素(父元素是 <FRAMESET> 元素),插入一個新的 <FRAME> 元素,並將其 HTML.Attribute.SRC 屬性設置為一個等於目標 URL 的值,並觸發 RemovedUpdate 和 InsertUpdate。
如果目標是 _top,則此方法不執行任何操作。在框架視圖(即 FrameView)的實作中,要對 _top 進行處理。給定該 _top 意味著替換整個文檔,在它要替換的文檔外部進行這項處理是有意義的。
如果目標是已命名的框架,則在元素層次結構中搜尋名稱等於目標的元素,更新其 HTML.Attribute.SRC 屬性並觸發 ChangedUpdate 事件。
e - 事件public void setParser(HTMLEditorKit.Parser parser)
setInnerHTML 和 setOuterHTML。
HTMLEditorKit.createDefaultDocument 用於設置解析器。如果手動創建 HTMLDocument,則一定要確保相應地設置解析器。
parser - 用於文本插入的解析器public HTMLEditorKit.Parser getParser()
public void setInnerHTML(Element elem,
String htmlText)
throws BadLocationException,
IOException
這將至少包括兩個事件,n 個插入事件後跟一個移除事件。
為了讓它正確工作,文檔必須具有一個 HTMLEditorKit.Parser 集。如果文檔是通過 createDefaultDocument 方法從 HTMLEditorKit 創建的,那麼就是這種情況。
elem - 其子元素將被替換的分支元素htmlText - 要被解析並分派給 elem 的字元串
IllegalArgumentException - 如果 elem 是一個葉元素
IllegalStateException - 如果尚未定義 HTMLEditorKit.Parser
BadLocationException
IOException
public void setOuterHTML(Element elem,
String htmlText)
throws BadLocationException,
IOException
這將至少包括兩個事件,n 個插入事件後跟一個移除事件。
當替換葉元素時,這將試圖確保存在一個新行(如果需要的話)。這可能導致插入額外的元素。考慮下面的情況,如果要用 <img> 替換一個套件含新行的字元元素,那麼這將創建兩個元素,一個用於圖像,另一個用於新行。
如果最後試圖替換元素,則最有可能以兩個元素結尾,例如,setOuterHTML(getCharacterElement (getLength()), "blah") 將導致結尾處有兩個葉元素,一個表示 'blah',而另一個則表示結尾元素。
為了讓它正確工作,文檔必須具有一個 HTMLEditorKit.Parser 集。如果文檔是通過 createDefaultDocument 方法從 HTMLEditorKit 創建的,那麼就是這種情況。
elem - 其子元素要被替換的分支元素htmlText - 要被解析並分派給 elem 的字元串
IllegalStateException - 如果尚未設置 HTMLEditorKit.Parser
BadLocationException
IOException
public void insertAfterStart(Element elem,
String htmlText)
throws BadLocationException,
IOException
為了讓它正確工作,文檔必須具有一個 HTMLEditorKit.Parser 集。如果文檔是通過 createDefaultDocument 方法從 HTMLEditorKit 創建的,那麼就是這種情況。
elem - 分支元素,它要作為新文本的根元素htmlText - 要被解析並分派給 elem 的字元串
IllegalStateException - 如果尚未在文檔上設置 HTMLEditorKit.Parser
BadLocationException
IOException
public void insertBeforeEnd(Element elem,
String htmlText)
throws BadLocationException,
IOException
如果 elem 的子元素是葉元素,並且 elem.getEndOffset() - 1 位置處的字元是一個新行符,則將內容插入到新行符的前面,以便新行符的後面沒有文本。
為了讓它正確工作,文檔必須具有一個 HTMLEditorKit.Parser 集。如果文檔是通過 createDefaultDocument 方法從 HTMLEditorKit 創建的,那麼就是這種情況。
elem - 元素,它要作為新文本的根元素htmlText - 要被解析並分派給 elem 的字元串
IllegalStateException - 如果尚未在文檔上設置 HTMLEditorKit.Parser
BadLocationException
IOException
public void insertBeforeStart(Element elem,
String htmlText)
throws BadLocationException,
IOException
為了讓它正確工作,文檔必須具有一個 HTMLEditorKit.Parser 集。如果文檔是通過 createDefaultDocument 方法從 HTMLEditorKit 創建的,那麼就是這種情況。
elem - 元素,它要作為新文本的根元素htmlText - 要被解析並分派給 elem 的字元串
IllegalStateException - 如果尚未在文檔上設置 HTMLEditorKit.Parser
BadLocationException
IOException
public void insertAfterEnd(Element elem,
String htmlText)
throws BadLocationException,
IOException
為了讓它正確工作,文檔必須具有一個 HTMLEditorKit.Parser 集。如果文檔是通過 createDefaultDocument 方法從 HTMLEditorKit 創建的,那麼就是這種情況。
elem - 元素,它要作為新文本的根元素htmlText - 要被解析並分派給 elem 的字元串
IllegalStateException - 如果尚未在文檔上設置 HTMLEditorKit.Parser
BadLocationException
IOExceptionpublic Element getElement(String id)
Attribute 的元素。如果未找到元素,則返回 null。注意,此方法處理的是 Attribute,而不是 字元串標記。在下面的 HTML 片段中:<a id="HelloThere">,屬性是 'id',字元串標記是 'a'。這是 getElement(RootElement, HTML.Attribute.id, id) 的一個便捷方法。它不是執行緒安全的。
id - 表示所需 Attribute 的字元串
Attribute 的元素,如果未找到,則返回 null,如果 id 為 null,則返回 nullHTML.Attribute
public Element getElement(Element e,
Object attribute,
Object value)
e(它包含具有值 value 的屬性 attribute)的子元素,如果未找到,則返回 null。它不是執行緒安全的。
e - 根元素,從它開始進行搜尋attribute - 所需的 Attributevalue - 指定 Attribute 的值
Attribute 和指定 value 的元素,如果未找到,則返回 nullHTML.Attributeprotected void fireChangedUpdate(DocumentEvent e)
AbstractDocument 中的 fireChangedUpdatee - 事件EventListenerListprotected void fireUndoableEditUpdate(UndoableEditEvent e)
AbstractDocument 中的 fireUndoableEditUpdatee - 事件EventListenerList
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。