730 lines
40 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
javax.swing.text
</div>
<h2 class="title" title="Interface Document">Interface Document</h2>
</div><div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Known Subinterfaces:
</dt>
<dd>
<span><a href="../../../javax/swing/text/StyledDocument.html" title="javax.swing.text中的接口">StyledDocument</a></span>
</dd>
</dl>
<dl>
<dt>
所有已知实现类:
</dt>
<dd>
<span><a href="../../../javax/swing/text/AbstractDocument.html" title="javax.swing.text中的类">AbstractDocument</a> <a href="../../../javax/swing/text/DefaultStyledDocument.html" title="javax.swing.text中的类">DefaultStyledDocument</a> <a href="../../../javax/swing/text/html/HTMLDocument.html" title="javax.swing.text.html中的类">HTMLDocument</a> <a href="../../../javax/swing/text/PlainDocument.html" title="javax.swing.text中的类">PlainDocument</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public interface <span class="typeNameLabel">Document</span></pre>
<div class="block">
<p> <span><code>Document</code>是用于文本的容器,用作挥杆文本组件的模型。</span> <span>该接口的目标是从非常简单的需求纯文本字段扩展到复杂的需求例如HTML或XML文档</span> </p>
<p> <span><b><font size="+1">内容</font></b></span> </p>
<p> <span>在最简单的层面上,文本可以被建模为一个线性的字符序列。</span> <span>为了支持国际化Swing文本模型使用<a href="http://www.unicode.org/">unicode个</a>字符。</span> <span>文本组件中显示的字符序列通常称为组件的<em>内容</em></span> </p>
<p> <span>要引用序列中的位置,所使用的坐标是两个字符之间的位置。</span> <span>如下图所示,文本文档中的位置可以称为位置或偏移。</span> <span>这个位置是基于零的。</span> </p>
<p style="text-align:center"><img alt="以下文字描述了此图形。" src="doc-files/Document-coord.gif"/></p>
<p> <span>在这个例子中如上图所示如果文档的内容是序列“快速棕色狐狸”则位于“The”之前的位置为0位于“The”之后的位置后面的空格是3。序列“The”中的整个字符序列被称为<em>范围</em></span> </p>
<p> <span>以下方法可以访问构成内容的字符数据。</span> </p>
<ul>
<li> <span><a href="../../../javax/swing/text/Document.html#getLength--"><code>getLength()</code></a></span> </li>
<li> <span><a href="../../../javax/swing/text/Document.html#getText-int-int-"><code>getText(int, int)</code></a></span> </li>
<li> <span><a href="../../../javax/swing/text/Document.html#getText-int-int-javax.swing.text.Segment-"><code>getText(int, int, javax.swing.text.Segment)</code></a></span> </li>
</ul>
<p> <span><b><font size="+1">结构体</font></b></span> </p>
<p> <span>文本很少被简单地表示为无特征的内容。</span> <span>相反,文本通常具有与其相关联的某种结构。</span> <span>正是由什么结构建模到由一个特定的Document实现。</span> <span>它可能就像没有结构一样简单(即一个简单的文本字段),或者它可能类似于下面的图。</span> </p>
<p style="text-align:center"><img alt="图 - &gt;章 - &gt;段" src="doc-files/Document-structure.gif"/></p>
<p> <span>结构单元(即树的一个节点)由<a href="Element.html">Element</a>接口引用。</span> <span>每个元素都可以用一组属性标记。</span> <span>这些属性(名称/值对)由<a href="AttributeSet.html">AttributeSet</a>接口定义。</span> </p>
<p> <span>以下方法可以访问文档结构。</span> </p>
<ul>
<li> <span><a href="../../../javax/swing/text/Document.html#getDefaultRootElement--"><code>getDefaultRootElement()</code></a></span> </li>
<li> <span><a href="../../../javax/swing/text/Document.html#getRootElements--"><code>getRootElements()</code></a></span> </li>
</ul>
<p> <span><b><font size="+1">突变</font></b></span> </p>
<p> <span>所有文件需要能够添加和删除简单的文本。</span> <span>通常,通过手势从键盘或鼠标插入和删除文本。</span> <span>对文档结构的插入或删除有什么影响完全取决于文档的实现。</span> </p>
<p> <span>以下方法与文件内容的突变有关:</span> </p>
<ul>
<li> <span><a href="../../../javax/swing/text/Document.html#insertString-int-java.lang.String-javax.swing.text.AttributeSet-"><code>insertString(int, java.lang.String, javax.swing.text.AttributeSet)</code></a></span> </li>
<li> <span><a href="../../../javax/swing/text/Document.html#remove-int-int-"><code>remove(int, int)</code></a></span> </li>
<li> <span><a href="../../../javax/swing/text/Document.html#createPosition-int-"><code>createPosition(int)</code></a></span> </li>
</ul>
<p> <span><b><font size="+1">通知</font></b></span> </p>
<p> <span>Document的<code>Document</code>必须传达给感兴趣的观察员。</span> <span>更改通知遵循为JavaBeans指定的事件模型指南。</span> <span>在JavaBeans事件模型中一旦调度了事件通知在事件源发生任何进一步突变之前必须通知所有侦听器。</span> <span>此外,交货的顺序不能保证。</span> </p>
<p> <span>通知作为两个单独的事件提供, <a href="../event/DocumentEvent.html">DocumentEvent</a><a href="../event/UndoableEditEvent.html">UndoableEditEvent</a></span> <span>如果通过其api向<code>Document</code>进行突变, <code>DocumentEvent</code>向所有注册的<code>DocumentListeners</code>发送<code>DocumentListeners</code></span> <span>如果<code>Document</code>实现支持撤消/重做功能,那么<code>UndoableEditEvent</code>将被发送到所有注册的<code>UndoableEditListener</code></span> <span>如果可撤消的编辑被撤销,则应从文档中触发<code>DocumentEvent</code>以指示它已重新更改。</span> <span>然而,在这种情况下,应该没有<code>UndoableEditEvent</code> UndoableEditEvent因为编辑实际上是变化的根源而不是通过其api进行的<code>Document</code>的突变。</span> </p>
<p style="text-align:center"><img alt="前面的文字描述了这个图形。" src="doc-files/Document-notification.gif"/></p>
<p> <span>参考上图,假设左侧所示的组件会以蓝色矩形表示的文档对象进行变异。</span> <span>该文档通过将DocumentEvent分派到两个组件视图进行响应并将一个UndoableEditEvent发送到监听逻辑该监听逻辑维护一个历史缓冲区。</span> </p>
<p> <span>现在假设右侧显示的组件会将相同的文档变为同一文档。</span> <span>同样文档会将DocumentEvent分派到两个组件视图并将UndoableEditEvent发送到维护历史缓冲区的侦听逻辑。</span> </p>
<p> <span>如果历史记录缓冲区然后回滚即最后一个UndoableEdit撤消则会将一个DocumentEvent发送到这两个视图这两个视图都会将文档中的撤消变量反映出来也就是删除正确的组件的突变</span> <span>如果历史缓冲区再次回滚另一个更改则会将另一个DocumentEvent发送到这两个视图从而使它们反映到文档的撤消变量 - 即删除左组件的突变。</span> </p>
<p> <span>与文献观察突变有关的方法有:</span> </p>
<ul>
<li> <span><a href="#addDocumentListener(javax.swing.event.DocumentListener)">addDocumentListener(DocumentListener)</a></span> </li>
<li> <span><a href="#removeDocumentListener(javax.swing.event.DocumentListener)">removeDocumentListener(DocumentListener)</a></span> </li>
<li> <span><a href="#addUndoableEditListener(javax.swing.event.UndoableEditListener)">addUndoableEditListener(UndoableEditListener)</a></span> </li>
<li> <span><a href="#removeUndoableEditListener(javax.swing.event.UndoableEditListener)">removeUndoableEditListener(UndoableEditListener)</a></span> </li>
</ul>
<p> <span><b><font size="+1">属性</font></b></span> </p>
<p> <span>文档实现通常会在运行时具有与它们相关联的一些属性集。</span> <span>两个众所周知的属性是<a href="#StreamDescriptionProperty">StreamDescriptionProperty</a> ,可以用来描述<code>Document</code>来自哪里,以及<a href="#TitleProperty">TitleProperty</a> ,可以用来命名<code>Document</code></span> <span>与属性相关的方法有:</span> </p>
<ul>
<li> <span><a href="../../../javax/swing/text/Document.html#getProperty-java.lang.Object-"><code>getProperty(java.lang.Object)</code></a></span> </li>
<li> <span><a href="../../../javax/swing/text/Document.html#putProperty-java.lang.Object-java.lang.Object-"><code>putProperty(java.lang.Object, java.lang.Object)</code></a></span> </li>
</ul>
<p> <span>有关<code>Document</code>课程的更多信息,请参阅<a href="http://java.sun.com/products/jfc/tsc">The Swing Connection</a> ,特别是文章<a href="http://java.sun.com/products/jfc/tsc/articles/text/element_interface">The Element Interface</a></span> </p>
</div>
<dl>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/swing/event/DocumentEvent.html" title="javax.swing.event中的接口"><code>DocumentEvent</code></a> <a href="../../../javax/swing/event/DocumentListener.html" title="javax.swing.event中的接口"><code>DocumentListener</code></a> <a href="../../../javax/swing/event/UndoableEditEvent.html" title="javax.swing.event中的类"><code>UndoableEditEvent</code></a> <a href="../../../javax/swing/event/UndoableEditListener.html" title="javax.swing.event中的接口"><code>UndoableEditListener</code></a> <a href="../../../javax/swing/text/Element.html" title="javax.swing.text中的接口"><code>Element</code></a> <a href="../../../javax/swing/text/Position.html" title="javax.swing.text中的接口"><code>Position</code></a> <a href="../../../javax/swing/text/AttributeSet.html" title="javax.swing.text中的接口"><code>AttributeSet</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- --> </a> <h3>Field Summary</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Field Summary table, listing fields, and an explanation">
<caption>
<span>Fields</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../java/lang/String.html" title="class in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#StreamDescriptionProperty">StreamDescriptionProperty</a></span></code>
<div class="block">
用于初始化文档的流的描述的属性名称。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../java/lang/String.html" title="class in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#TitleProperty">TitleProperty</a></span></code>
<div class="block">
文件标题的属性名称,如果有的话。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#addDocumentListener-javax.swing.event.DocumentListener-">addDocumentListener</a></span>(<a href="../../../javax/swing/event/DocumentListener.html" title="interface in javax.swing.event">DocumentListener</a> listener)</code>
<div class="block">
注册给定的观察者,以便在对文档进行更改时开始接收通知。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#addUndoableEditListener-javax.swing.event.UndoableEditListener-">addUndoableEditListener</a></span>(<a href="../../../javax/swing/event/UndoableEditListener.html" title="interface in javax.swing.event">UndoableEditListener</a> listener)</code>
<div class="block">
注册给定的观察者,以便在对文档进行撤消修改时开始接收通知。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code><a href="../../../javax/swing/text/Position.html" title="interface in javax.swing.text">Position</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#createPosition-int-">createPosition</a></span>(int offs)</code>
<div class="block">
该方法允许应用程序在字符内容序列中标记一个地方。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code><a href="../../../javax/swing/text/Element.html" title="interface in javax.swing.text">Element</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getDefaultRootElement--">getDefaultRootElement</a></span>()</code>
<div class="block">
返回视图应该基于的根元素,除非提供了用于将视图分配给元素结构的其他机制。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code><a href="../../../javax/swing/text/Position.html" title="interface in javax.swing.text">Position</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getEndPosition--">getEndPosition</a></span>()</code>
<div class="block">
返回表示文档结尾的位置。
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getLength--">getLength</a></span>()</code>
<div class="block">
返回文档中当前内容的字符数。
</div> </td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getProperty-java.lang.Object-">getProperty</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> key)</code>
<div class="block">
获取与文档关联的属性。
</div> </td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code><a href="../../../javax/swing/text/Element.html" title="interface in javax.swing.text">Element</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getRootElements--">getRootElements</a></span>()</code>
<div class="block">
返回定义的所有根元素。
</div> </td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code><a href="../../../javax/swing/text/Position.html" title="interface in javax.swing.text">Position</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getStartPosition--">getStartPosition</a></span>()</code>
<div class="block">
返回表示文档开头的位置。
</div> </td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code><a href="../../../java/lang/String.html" title="class in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getText-int-int-">getText</a></span>(int offset, int length)</code>
<div class="block">
获取文档给定部分中包含的文本。
</div> </td>
</tr>
<tr class="altColor" id="i10">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#getText-int-int-javax.swing.text.Segment-">getText</a></span>(int offset, int length, <a href="../../../javax/swing/text/Segment.html" title="class in javax.swing.text">Segment</a> txt)</code>
<div class="block">
获取文档给定部分中包含的文本。
</div> </td>
</tr>
<tr class="rowColor" id="i11">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#insertString-int-java.lang.String-javax.swing.text.AttributeSet-">insertString</a></span>(int offset, <a href="../../../java/lang/String.html" title="class in java.lang">String</a> str, <a href="../../../javax/swing/text/AttributeSet.html" title="interface in javax.swing.text">AttributeSet</a> a)</code>
<div class="block">
插入一串内容。
</div> </td>
</tr>
<tr class="altColor" id="i12">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#putProperty-java.lang.Object-java.lang.Object-">putProperty</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> key, <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> value)</code>
<div class="block">
将属性与文档相关联。
</div> </td>
</tr>
<tr class="rowColor" id="i13">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#remove-int-int-">remove</a></span>(int offs, int len)</code>
<div class="block">
删除文档内容的一部分。
</div> </td>
</tr>
<tr class="altColor" id="i14">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#removeDocumentListener-javax.swing.event.DocumentListener-">removeDocumentListener</a></span>(<a href="../../../javax/swing/event/DocumentListener.html" title="interface in javax.swing.event">DocumentListener</a> listener)</code>
<div class="block">
从通知列表中注销给定的观察者,以便它不会再接收更改更新。
</div> </td>
</tr>
<tr class="rowColor" id="i15">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#removeUndoableEditListener-javax.swing.event.UndoableEditListener-">removeUndoableEditListener</a></span>(<a href="../../../javax/swing/event/UndoableEditListener.html" title="interface in javax.swing.event">UndoableEditListener</a> listener)</code>
<div class="block">
从通知列表中注销给定的观察者,因此它将不再接收更新。
</div> </td>
</tr>
<tr class="altColor" id="i16">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/swing/text/Document.html#render-java.lang.Runnable-">render</a></span>(<a href="../../../java/lang/Runnable.html" title="interface in java.lang">Runnable</a> r)</code>
<div class="block">
如果模型支持异步更新,则允许在存在并发性的情况下安全地呈现模型。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- --> </a> <h3>字段详细信息</h3> <a name="StreamDescriptionProperty">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>StreamDescriptionProperty</h4> <pre>static final <a href="../../../java/lang/String.html" title="class in java.lang">String</a> StreamDescriptionProperty</pre>
<div class="block">
<span>用于初始化文档的流的描述的属性名称。</span>
<span>如果文档是从流初始化的,并且关于流的所有内容都是已知的,则应该使用这一点。</span>
</div>
<dl>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../constant-values.html#javax.swing.text.Document.StreamDescriptionProperty">Constant Field Values</a>
</dd>
</dl> </li>
</ul> <a name="TitleProperty">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>TitleProperty</h4> <pre>static final <a href="../../../java/lang/String.html" title="class in java.lang">String</a> TitleProperty</pre>
<div class="block">
文件标题的属性名称,如果有的话。
</div>
<dl>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../constant-values.html#javax.swing.text.Document.TitleProperty">Constant Field Values</a>
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getLength--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getLength</h4> <pre>int getLength()</pre>
<div class="block">
返回文档中当前内容的字符数。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
字符数&gt; = 0
</dd>
</dl> </li>
</ul> <a name="addDocumentListener-javax.swing.event.DocumentListener-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>addDocumentListener</h4> <pre>void addDocumentListener(<a href="../../../javax/swing/event/DocumentListener.html" title="interface in javax.swing.event">DocumentListener</a> listener)</pre>
<div class="block">
注册给定的观察者,以便在对文档进行更改时开始接收通知。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>listener</code> - 观察员注册
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/swing/text/Document.html#removeDocumentListener-javax.swing.event.DocumentListener-"><code>removeDocumentListener(javax.swing.event.DocumentListener)</code></a>
</dd>
</dl> </li>
</ul> <a name="removeDocumentListener-javax.swing.event.DocumentListener-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>removeDocumentListener</h4> <pre>void removeDocumentListener(<a href="../../../javax/swing/event/DocumentListener.html" title="interface in javax.swing.event">DocumentListener</a> listener)</pre>
<div class="block">
从通知列表中注销给定的观察者,以便它不会再接收更改更新。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>listener</code> - 观察员注册
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/swing/text/Document.html#addDocumentListener-javax.swing.event.DocumentListener-"><code>addDocumentListener(javax.swing.event.DocumentListener)</code></a>
</dd>
</dl> </li>
</ul> <a name="addUndoableEditListener-javax.swing.event.UndoableEditListener-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>addUndoableEditListener</h4> <pre>void addUndoableEditListener(<a href="../../../javax/swing/event/UndoableEditListener.html" title="interface in javax.swing.event">UndoableEditListener</a> listener)</pre>
<div class="block">
注册给定的观察者,以便在对文档进行撤消修改时开始接收通知。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>listener</code> - 观察员注册
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/swing/event/UndoableEditEvent.html" title="javax.swing.event中的类"><code>UndoableEditEvent</code></a></span>
</dd>
</dl> </li>
</ul> <a name="removeUndoableEditListener-javax.swing.event.UndoableEditListener-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>removeUndoableEditListener</h4> <pre>void removeUndoableEditListener(<a href="../../../javax/swing/event/UndoableEditListener.html" title="interface in javax.swing.event">UndoableEditListener</a> listener)</pre>
<div class="block">
从通知列表中注销给定的观察者,因此它将不再接收更新。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>listener</code> - 观察员注册
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/swing/event/UndoableEditEvent.html" title="javax.swing.event中的类"><code>UndoableEditEvent</code></a></span>
</dd>
</dl> </li>
</ul> <a name="getProperty-java.lang.Object-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getProperty</h4> <pre><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> getProperty(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> key)</pre>
<div class="block">
获取与文档关联的属性。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>key</code> - 非
<code>null</code>属性键
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
的属性
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/swing/text/Document.html#putProperty-java.lang.Object-java.lang.Object-"><code>putProperty(Object, Object)</code></a>
</dd>
</dl> </li>
</ul> <a name="putProperty-java.lang.Object-java.lang.Object-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>putProperty</h4> <pre>void putProperty(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> key,
<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> value)</pre>
<div class="block">
<span>将属性与文档相关联。</span>
<span>提供的两个标准属性键有: <a href="#StreamDescriptionProperty"><code>StreamDescriptionProperty</code></a><a href="#TitleProperty"><code>TitleProperty</code></a></span>
<span>也可以定义其他属性,如作者。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>key</code> - 非
<code>null</code>属性键
</dd>
<dd>
<code>value</code> - 物业价值
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/swing/text/Document.html#getProperty-java.lang.Object-"><code>getProperty(Object)</code></a>
</dd>
</dl> </li>
</ul> <a name="remove-int-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>remove</h4> <pre>void remove(int offs,
int len)
throws <a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></pre>
<div class="block">
<span>删除文档内容的一部分。</span>
<span>这将导致DocumentEvent.EventType.REMOVE类型的DocumentEvent发送到已注册的DocumentListeners除非抛出异常。</span>
<span>该通知将通过调用DocumentListeners上的removeUpdate方法发送给监听器。</span>
<p> <span>为了确保在并发性方面的合理行为,事件发生后发生。</span> <span>这意味着在发出删除通知之后,文档已经被更新,并且由<code>createPosition</code>创建的任何标记已经改变。</span> <span>对于删除,删除范围的结束将折叠到范围的开始,并且删除范围中的任何标记都将折叠到范围的开头。</span> </p>
<p style="text-align:center"><img alt="图表显示从“快速棕色狐狸”中删除“快速”。" src="doc-files/Document-remove.gif"/></p>
<p> <span>如果文档结构由于删除而更改则会在生成的DocumentEvent中包含要更改的元素插入和删除的详细信息。</span> <span>由文件的实施决定结构如何改变以应对删除。</span> </p>
<p> <span>如果文档支持撤消/重做则还将生成UndoableEditEvent。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>offs</code> - 从开始&gt; = 0的偏移量
</dd>
<dd>
<code>len</code> - 要删除的字符数&gt; = 0
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<span><code><a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></code> - 删除范围的某些部分不是文档的有效部分。</span>
<span>异常中的位置是遇到的第一个坏位置。</span>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/swing/event/DocumentEvent.html" title="javax.swing.event中的接口"><code>DocumentEvent</code></a> <a href="../../../javax/swing/event/DocumentListener.html" title="javax.swing.event中的接口"><code>DocumentListener</code></a> <a href="../../../javax/swing/event/UndoableEditEvent.html" title="javax.swing.event中的类"><code>UndoableEditEvent</code></a> <a href="../../../javax/swing/event/UndoableEditListener.html" title="javax.swing.event中的接口"><code>UndoableEditListener</code></a></span>
</dd>
</dl> </li>
</ul> <a name="insertString-int-java.lang.String-javax.swing.text.AttributeSet-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>insertString</h4> <pre>void insertString(int offset,
<a href="../../../java/lang/String.html" title="class in java.lang">String</a> str,
<a href="../../../javax/swing/text/AttributeSet.html" title="interface in javax.swing.text">AttributeSet</a> a)
throws <a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></pre>
<div class="block">
<span>插入一串内容。</span>
<span>这将导致DocumentEvent.EventType.INSERT类型的DocumentEvent发送到已注册的DocumentLister除非抛出异常。</span>
<span>DocumentEvent将通过在DocumentListener上调用insertUpdate方法来传递。</span>
<span>生成的DocumentEvent的偏移量和长度将指示实际对文档进行了哪些更改。</span>
<p style="text-align:center"><img alt="图表显示在“快速棕色狐狸”中插入“快速”" src="doc-files/Document-insert.gif"/></p>
<p> <span>如果文档结构因插入而更改则会在生成的DocumentEvent中包含要更改的元素插入和删除的详细信息。</span> <span>文件的执行取决于结构如何响应插入而改变。</span> </p>
<p> <span>如果文档支持撤消/重做则还将生成UndoableEditEvent。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>offset</code> - 要插入内容&gt; = 0的文档的偏移量。在给定位置或之后跟踪更改的所有位置将移动。
</dd>
<dd>
<code>str</code> - 要插入的字符串
</dd>
<dd>
<span><code>a</code> - 与插入的内容关联的属性。</span>
<span>如果没有属性则可能为null。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></code> - 给定的插入位置不是文档中的有效位置
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/swing/event/DocumentEvent.html" title="javax.swing.event中的接口"><code>DocumentEvent</code></a> <a href="../../../javax/swing/event/DocumentListener.html" title="javax.swing.event中的接口"><code>DocumentListener</code></a> <a href="../../../javax/swing/event/UndoableEditEvent.html" title="javax.swing.event中的类"><code>UndoableEditEvent</code></a> <a href="../../../javax/swing/event/UndoableEditListener.html" title="javax.swing.event中的接口"><code>UndoableEditListener</code></a></span>
</dd>
</dl> </li>
</ul> <a name="getText-int-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getText</h4> <pre><a href="../../../java/lang/String.html" title="class in java.lang">String</a> getText(int offset,
int length)
throws <a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></pre>
<div class="block">
获取文档给定部分中包含的文本。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>offset</code> - 表示文本的期望开始的文档的偏移量&gt; = 0
</dd>
<dd>
<code>length</code> - 所需字符串的长度&gt; = 0
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
文本,长度&gt; = 0的字符串
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<span><code><a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></code> - 给定范围的某些部分不是文档的有效部分。</span>
<span>异常中的位置是遇到的第一个坏位置。</span>
</dd>
</dl> </li>
</ul> <a name="getText-int-int-javax.swing.text.Segment-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getText</h4> <pre>void getText(int offset,
int length,
<a href="../../../javax/swing/text/Segment.html" title="class in javax.swing.text">Segment</a> txt)
throws <a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></pre>
<div class="block">
<span>获取文档给定部分中包含的文本。</span>
<p> <span>如果txt参数的partialReturn属性为false则在段中返回的数据将是所请求的整个长度并且根据数据的存储方式可以复制或不复制。</span> <span>如果partialReturn属性为true则只返回无需创建副本的文本数量。</span> <span>使用部分返回将会在扫描文档的大部分的情况下提供更好的性能。</span> <span>以下是使用部分返回访问整个文档的示例:</span> </p>
<pre> <span><code>   int nleft = doc.getDocumentLength();   Segment text = new Segment();   int offs = 0;   text.setPartialReturn(true);   while (nleft &gt; 0) {   doc.getText(offs, nleft, text);   // do someting with text   nleft -= text.count;   offs += text.count;   } </code></span> </pre>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>offset</code> - 表示文本的期望开始的文档的偏移量&gt; = 0
</dd>
<dd>
<code>length</code> - 所需字符串的长度&gt; = 0
</dd>
<dd>
<code>txt</code> - 返回文本的Segment对象
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<span><code><a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></code> - 给定范围的某些部分不是文档的有效部分。</span>
<span>异常中的位置是遇到的第一个坏位置。</span>
</dd>
</dl> </li>
</ul> <a name="getStartPosition--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getStartPosition</h4> <pre><a href="../../../javax/swing/text/Position.html" title="interface in javax.swing.text">Position</a> getStartPosition()</pre>
<div class="block">
<span>返回表示文档开头的位置。</span>
<span>返回的位置可以计入跟踪更改并保持位于文档的开头。</span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
的位置
</dd>
</dl> </li>
</ul> <a name="getEndPosition--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getEndPosition</h4> <pre><a href="../../../javax/swing/text/Position.html" title="interface in javax.swing.text">Position</a> getEndPosition()</pre>
<div class="block">
<span>返回表示文档结尾的位置。</span>
<span>返回的位置可以计入跟踪更改并保留在文档的末尾。</span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
的位置
</dd>
</dl> </li>
</ul> <a name="createPosition-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>createPosition</h4> <pre><a href="../../../javax/swing/text/Position.html" title="interface in javax.swing.text">Position</a> createPosition(int offs)
throws <a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></pre>
<div class="block">
<span>该方法允许应用程序在字符内容序列中标记一个地方。</span>
<span>然后可以使用该标记来跟踪内容中的插入和移除的变化。</span>
<span>该策略是插入始终在当前位置之前(最常见的情况)发生,除非插入位置为零,在这种情况下,插入被强制到位于原始位置之后的位置。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>offs</code> - 从文档开始&gt; = 0的偏移量
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
的位置
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../javax/swing/text/BadLocationException.html" title="class in javax.swing.text">BadLocationException</a></code> - 如果给定的位置不表示相关文档中的有效位置
</dd>
</dl> </li>
</ul> <a name="getRootElements--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getRootElements</h4> <pre><a href="../../../javax/swing/text/Element.html" title="interface in javax.swing.text">Element</a>[] getRootElements()</pre>
<div class="block">
<span>返回定义的所有根元素。</span>
<p> <span>通常只有一个文档结构,但接口支持在文本数据上构建任意数量的结构投影。</span> <span>该文档可以有多个根元素来支持多个文档结构。</span> <span>一些例子可能是:</span> </p>
<ul>
<li> <span>文字方向。</span> </li>
<li> <span>词汇标记流。</span> </li>
<li> <span>解析树。</span> </li>
<li> <span>转换为原生格式以外的格式。</span> </li>
<li> <span>修改规格。</span> </li>
<li> <span>注释。</span> </li>
</ul>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
根元素
</dd>
</dl> </li>
</ul> <a name="getDefaultRootElement--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getDefaultRootElement</h4> <pre><a href="../../../javax/swing/text/Element.html" title="interface in javax.swing.text">Element</a> getDefaultRootElement()</pre>
<div class="block">
返回视图应该基于的根元素,除非提供了用于将视图分配给元素结构的其他机制。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
根元素
</dd>
</dl> </li>
</ul> <a name="render-java.lang.Runnable-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>render</h4> <pre>void render(<a href="../../../java/lang/Runnable.html" title="interface in java.lang">Runnable</a> r)</pre>
<div class="block">
<span>如果模型支持异步更新,则允许在存在并发性的情况下安全地呈现模型。</span>
<span>给定的可运行程序将以允许其在执行runnable时不改变的情况下安全地读取模型的方式执行。</span>
<span>runnable本身可能<em>不会发生</em>任何突变。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>r</code> - 一个用于渲染模型的
<code>Runnable</code>
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>