站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

View (Java 2 Platform SE 5.0) - JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

JavaTM 2 Platform
Standard Ed. 5.0

javax.swing.text
类 View

java.lang.Object
  继承者 javax.swing.text.View
所有已实现的接口:
SwingConstants
直接已知子类:
AsyncBoxView, ComponentView, CompositeView, GlyphView, IconView, ImageView, PlainView

public abstract class View
extends Object
implements SwingConstants

View 类是 text 包极为重要的一部分。顾名思义,其表示文本模型的一个视图或者文本模型的一部分。负责文本组件外观的正是此类。View 无意成为用户必须学习的全新内容,相反其更像是一个轻量级组件。事实上,最初的 View 实现就是一个轻量级组件。抛弃了 Component 实现这个替代方案有几个原因。

  1. 在 JDK 的 1.1 版中,几乎没有时间来获得轻量级组件的支持。要将组件减轻到满足用于文本所需的地步不仅仅是时间问题。对 JComponent 所做的额外处理增大了内存消耗,并且按照当前情况看来,其对于呈现文本而言仍然过重。

  2. 布局语义不是很适合文本,而更改组件的当前布局语义有可能破坏现有的应用程序。

  3. 组件 api 使用整数,但是在 1.2 中,用户可以使用与设备无关的浮点坐标。对 1.1 和 1.2 都有效的 api 便于最小化过渡困难。View 类使用 Shape 接口和 float 参数来使 View 实现能在 Java 2 平台 v1.2 及其之后的版本使用,同时在更老的 JDK 1.1 中也能运行。

在默认情况下,视图是很轻量的。它包含一个对父视图的引用,由此能获取许多内容而无需保持状态,它还包含一个对模型 (Element) 某部分的引用。视图无需精确地表示模型中的元素,而只是使用一个典型而便利的映射。视图可以选择性地维护一对 Position 对象,从而维护其在模型中的位置(即表示一个元素段)。这通常是将视图拆分为片的格式化的结果。与元素坚固联系的便利之处在于使其更容易地构建工厂来生成视图,还能使其在模型更改时更容易地跟踪视图片,并且视图一定会更改视图来反映该模型。因此,简单的视图直接表示一个 Element,而复杂的视图并不如此。

视图具有以下责任:

参与布局。

视图有一个 setSize 方法,该方法如同 Component 中的 doLayoutsetSize 组合而成。视图有一个 preferenceChanged 方法,该方法与 Component 中的 invalidate 类似,但该方法可以仅使一个轴无效并标识请求更改的子级。

View 根据三个值(即最小跨距、首选跨距、最大跨距)来表示其所需的大小。视图中的布局可以在独立于每一个轴来完成。对于一个运行正常的 View 实现,将满足:最小跨距 <= 首选跨距 <= 最大跨距。

以上文本是对此图像的描述。

布局最小值的设置方法有:

方法 setSize 应当准备好被多次调用(即使在大小没有更改时也可能调用此方法)。通常调用 setSize 方法来确保试图在视图上执行需要更新布局的操作之前,已经完成了 View 布局。应该始终 将视图的大小设置为该视图所指定的最小跨距和最大跨距之间的某个值。此外,如果视图已经更改了其需要的布局值,并且希望其父级遵守该值,则必须一直在其父级上调用 preferenceChanged 方法。在发送了 preferenceChanged 之前,父 View 无需识别更改。如果需要的话,此类允许父 View 实现缓存子级的需求。调用序列如下所示:

父视图和子视图间的示例调用序列: 
       setSize, getMinimum, getPreferred, getMaximum, getAlignment, setSize

确切的调用序列取决于父视图的布局功能(如果该视图具有任何子级)。在决定提供给每个子级的内容之前,视图可能收集子级的优先权,或者其可能一次一个地迭代更新子级。

呈现模型的一部分。

这在 paint 方法中完成,该方法与组件的 paint 方法非常类似。期望 View 潜在地组装一个相当大的树。对于呈现,View 具有如下语义:

  • 视图在绘制时从其父级获取分配,因此如果分配的区域与其准备处理的区域不同,其必须准备重新执行布局。
  • 坐标系统与承载 Component(即由 getContainer 方法返回的 Component)相同。这意味着子视图与父级处于同一个坐标系统中,除非父级显式地改变了坐标系统。要安排重绘本身,视图可以在承载 Component 上调用 repaint。
  • 在默认情况下不剪贴 子级。允许视图只在真正需要剪贴的时候进行剪贴才更有效率。
  • 给定的 Graphics 对象没有以任何方式初始化。视图应该设置任何所需的设置。
  • View 本身是透明的。虽然视图可以呈现在其整个分配中,但通常视图不这么做。通过向下遍历 View 实现树来执行呈现。每个 View 负责呈现其子级。线程安全取决于此行为。虽然视图实现不必要在实现时考虑线程安全,但是其他确实利用了并发的视图实现可以依赖树遍历来保证线程安全。
  • 相对于模型的视图顺序由实现来决定。尽管子视图通常将按其在模型中出现的相同顺序被排列,但它们也可能以完全不同的顺序来可视地排列。如果子级是重叠的,View 实现可能具有一个与其相关联的 Z-顺序。

用于呈现的方法有:

在模型和视图坐标系统间转换。

因为视图对象产生自一个工厂,因而不能指望其必然处于某个特定模型,所以用户必须要能够执行转换以恰当地定位模型的空间表示形式。执行此操作的方法有:

在尝试进行转换之前布局必须有效。当通过 DocumentEvent 从模型广播更改时,转换无效并且禁止尝试。

响应模型的更改。

如果总体视图由多片(如果希望更改视图并写入最小数量的新代码,这是最佳的情形)表示,而具有大量的 DocumentListener 是不现实的。如果每个视图都侦听模型,在任意给定的时间上,仅有少数视图可能对所广播的更改实际感兴趣。因为模型不了解视图,所以没有方法来过滤更改信息的广播。视图层次结构本身就代为负责传播更改信息。在视图层次结构的任何一层上,视图都足够了解其子级,从而能最佳地进一步分发更改信息。因此,更改从视图层次结构的根开始广播。执行此操作的方法有:


字段摘要
static int BadBreakWeight
          该权重指示对于格式化来说视图未处于拆分的好时机。
static int ExcellentBreakWeight
          该权重指示视图支持拆分,并且表示拆分的极好时机。
static int ForcedBreakWeight
          该权重指示视图支持拆分,并且在被置入一个通过拆分其子级来格式化子级的视图时,必须拆分该视图以恰当的表示它。
static int GoodBreakWeight
          该权重指示视图支持拆分,但是可能存在更好时机。
static int X_AXIS
          用于格式化/拆分操作的轴。
static int Y_AXIS
          用于格式化/拆分操作的轴。
 
从接口 javax.swing.SwingConstants 继承的字段
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
构造方法摘要
View(Element elem)
          创建一个新的 View 对象。
 
方法摘要
 void append(View v)
          追加单个子视图。
 View breakView(int axis, int offset, float pos, float len)
          试图在给定的轴上拆分视图。
 void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
          发出通知,通知文档此视图负责的位置处的属性已更改。
 View createFragment(int p0, int p1)
          创建一个表示元素某部分的视图。
protected  void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
          将给定的 DocumentEvent 转发给需要被通知模型更改的子视图。
protected  void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
          将 DocumentEvent 转发到给定的子视图。
 float getAlignment(int axis)
          确定此视图沿某个轴所需的对齐方式。
 AttributeSet getAttributes()
          获取呈现时要使用的属性。
 int getBreakWeight(int axis, float pos, float len)
          确定此视图中拆分时机的权重大小。
 Shape getChildAllocation(int index, Shape a)
          获取给定子视图的分配。
 Container getContainer()
          获取承载视图的容器。
 Document getDocument()
          获取与视图关联的模型。
 Element getElement()
          获取此视图所映射的主题的结构化部分。
 int getEndOffset()
          获取此视图负责的模型的一部分。
 Graphics getGraphics()
          获取用于呈现的 Graphics
 float getMaximumSpan(int axis)
          确定此视图沿某个轴的最大跨距。
 float getMinimumSpan(int axis)
          确定此视图沿某个轴的最小跨距。
 int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          提供某种途径来确定可以放置一个插入符的下一个可视表示模型位置。
 View getParent()
          返回视图的父级。
abstract  float getPreferredSpan(int axis)
          确定此视图沿某个轴的首选跨距。
 int getResizeWeight(int axis)
          确定视图沿给定轴的大小可调整性。
 int getStartOffset()
          获取此视图负责的模型的一部分。
 String getToolTipText(float x, float y, Shape allocation)
          返回提定位置的工具提示文本。
 View getView(int n)
          获取第 n 个子视图。
 int getViewCount()
          返回此视图中的视图数。
 ViewFactory getViewFactory()
          获取将提供给视图层次结构的 ViewFactory 实现。
 int getViewIndex(float x, float y, Shape allocation)
          返回表示视图中给定位置的子视图索引。
 int getViewIndex(int pos, Position.Bias b)
          返回表示模型中给定位置的子视图索引。
 void insert(int offs, View v)
          插入单个子视图。
 void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
          发出通知,通知在文档中此视图负责的某个位置已插入内容。
 boolean isVisible()
          返回一个指示视图是否可视的 boolean 值。
 Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
          为给定区域提供从文档模型坐标空间到视图坐标空间的映射。
 Shape modelToView(int pos, Shape a)
          已过时。  
abstract  Shape modelToView(int pos, Shape a, Position.Bias b)
          为给定字符提供从文档模型坐标空间到视图坐标空间的映射。
abstract  void paint(Graphics g, Shape allocation)
          使用给定的呈现表面和该表面上的区域来呈现。
 void preferenceChanged(View child, boolean width, boolean height)
          子视图能在父级上调用此方法来指示首选项已经更改,并且应该重新考虑布局。
 void remove(int i)
          移除给定位置处的一个子级。
 void removeAll()
          移除所有子级。
 void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
          给出从文档中此视图负责的位置移除了某些内容的通知。
 void replace(int offset, int length, View[] views)
          替代子视图。
 void setParent(View parent)
          为此视图建立父视图。
 void setSize(float width, float height)
          设置视图的大小。
protected  boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
          更新子视图以响应接收模型变化的通知,并且有一条此视图负责的元素的变化记录。
protected  void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
          更新布局,以响应从模型接受的更改通知。
 int viewToModel(float x, float y, Shape a)
          已过时。  
abstract  int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
          提供从视图坐标空间到模型的逻辑坐标空间的映射。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

BadBreakWeight

public static final int BadBreakWeight
该权重指示对于格式化来说视图未处于拆分的好时机。此值指示不应该尝试将视图拆分成段,因为该视图没有写入支持分段操作。

另请参见:
getBreakWeight(int, float, float), GoodBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, 常量字段值

GoodBreakWeight

public static final int GoodBreakWeight
该权重指示视图支持拆分,但是可能存在更好时机。

另请参见:
getBreakWeight(int, float, float), BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, 常量字段值

ExcellentBreakWeight

public static final int ExcellentBreakWeight
该权重指示视图支持拆分,并且表示拆分的极好时机。

另请参见:
getBreakWeight(int, float, float), BadBreakWeight, GoodBreakWeight, ForcedBreakWeight, 常量字段值

ForcedBreakWeight

public static final int ForcedBreakWeight
该权重指示视图支持拆分,并且在被置入一个通过拆分其子级来格式化子级的视图时,必须拆分该视图以恰当的表示它。

另请参见:
getBreakWeight(int, float, float), BadBreakWeight, GoodBreakWeight, ExcellentBreakWeight, 常量字段值

X_AXIS

public static final int X_AXIS
用于格式化/拆分操作的轴。

另请参见:
常量字段值

Y_AXIS

public static final int Y_AXIS
用于格式化/拆分操作的轴。

另请参见:
常量字段值
构造方法详细信息

View

public View(Element elem)
创建一个新的 View 对象。

参数:
elem - 要表示的 Element
方法详细信息

getParent

public View getParent()
返回视图的父级。

返回:
父级,如果不存在则返回 null

isVisible

public boolean isVisible()
返回一个指示视图是否可视的 boolean 值。在默认情况下所有视图都是可视的。

返回:
始终返回 true

getPreferredSpan

public abstract float getPreferredSpan(int axis)
确定此视图沿某个轴的首选跨距。

参数:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
视图想要在其中呈现的跨距。通常告知视图呈现在返回的跨距中,但并不保证如此。父级可能选择调整视图大小或者拆分视图。
另请参见:
getPreferredSpan(int)

getMinimumSpan

public float getMinimumSpan(int axis)
确定此视图沿某个轴的最小跨距。

参数:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
视图能在其中呈现的最小跨距。
另请参见:
getPreferredSpan(int)

getMaximumSpan

public float getMaximumSpan(int axis)
确定此视图沿某个轴的最大跨距。

参数:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
视图能在其中呈现的最大跨距。
另请参见:
getPreferredSpan(int)

preferenceChanged

public void preferenceChanged(View child,
                              boolean width,
                              boolean height)
子视图能在父级上调用此方法来指示首选项已经更改,并且应该重新考虑布局。在默认情况下,此方法仅仅上传播到下一个父级。根视图将在相关联的文本组件上调用 revalidate

参数:
child - 子视图
width - 如果宽度首选项更改,则该参数为 true
height - 如果高度首选项更改,则该参数为 true
另请参见:
JComponent.revalidate()

getAlignment

public float getAlignment(int axis)
确定此视图沿某个轴所需的对齐方式。返回所需的对齐方式。这应该是一个 >= 0.0 并且 <= 1.0 的值,其中 0 指示在起始处对齐,1.0 指示在离起始处的整个跨距的地方对齐。0.5 则指示在视图中央对齐。

参数:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
值 0.5

paint

public abstract void paint(Graphics g,
                           Shape allocation)
使用给定的呈现表面和该表面上的区域来呈现。该视图可能需要进行布置和创建子视图,以使它本身能够在给定的分配区域呈现。

参数:
g - 要使用的呈现表面
allocation - 分配的要在其中呈现的区域
另请参见:
paint(java.awt.Graphics, java.awt.Shape)

setParent

public void setParent(View parent)
为此视图建立父视图。如果父视图运行正常,则会保证在其他任何方法之前调用此方法。这也是最后调用的一个方法,因为也调用其来指示已从层次结构中移除视图。当调用此方法来将父级设置为 null 时,此方法对每一个子级执行同样操作,传播它们已经从视图树中断开连接的通知。如果重新实现此方法,应该调用 super.setParent()

参数:
parent - 新的父级,如果要从父级中移除视图,则为 null

getViewCount

public int getViewCount()
返回此视图中的视图数。因为默认情况下不是一个复合视图,所以此方法返回 0。

返回:
视图数,该值 >= 0
另请参见:
getViewCount()

getView

public View getView(int n)
获取第 n 个子视图。因为在默认情况下没有任何子级,所以此方法返回 null

参数:
n - 要获取的视图的编号,该值 >= 0 && < getViewCount()
返回:
视图

removeAll

public void removeAll()
移除所有子级。此方法是 replace 的便捷调用。

从以下版本开始:
1.3

remove

public void remove(int i)
移除给定位置处的一个子级。此方法是 replace 的便捷调用。

从以下版本开始:
1.3

insert

public void insert(int offs,
                   View v)
插入单个子视图。此方法是 replace 的便捷调用。

参数:
offs - 要其前插入视图的偏移量,该值 >= 0
v - 视图
从以下版本开始:
1.3
另请参见:
replace(int, int, javax.swing.text.View[])

append

public void append(View v)
追加单个子视图。此方法是 replace 的便捷调用。

参数:
v - 视图
从以下版本开始:
1.3
另请参见:
replace(int, int, javax.swing.text.View[])

replace

public void replace(int offset,
                    int length,
                    View[] views)
替代子视图。如果没有任何视图要移除,则此方法充当一个插入操作。如果没有任何视图要添加,则此方法充当一个移除操作。将要被移除的视图会将其父级设置为 null,并且移除对它们的内部引用以便能被垃圾回收。实现此方法以不执行任何操作,因为默认情况下视图没有任何子级。

参数:
offset - 子视图中插入新 views 的起始索引。这应当是一个 >= 0 并且 <= getViewCount 的值
length - 要移除的已存在的子视图数 这应当是一个 >= 0 并且 <= (getViewCount() - offset) 的值。
views - 要添加的子视图。此值可以为 null,指示当前不添加任何子级(移除时很有用)
从以下版本开始:
1.3

getViewIndex

public int getViewIndex(int pos,
                        Position.Bias b)
返回表示模型中给定位置的子视图索引。默认情况下,视图没有任何子级,因此实现此方法以返回 -1,指示在任何位置都没有有效的子级索引。

参数:
pos - 位置,该值 >= 0
返回:
表示给定位置的视图索引,如果没有任何视图表示该位置,则返回 -1

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
获取给定子视图的分配。这使得在没有假定视图如何存储其位置的情况下,能找出各种视图的定位。因为默认情况下没有任何子视图,所以此方法返回 null

参数:
index - 子级的索引,该值 >= 0 && < getViewCount()
a - 此视图的分配
返回:
子级的分配

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos,
                                     Position.Bias b,
                                     Shape a,
                                     int direction,
                                     Position.Bias[] biasRet)
                              throws BadLocationException
提供某种途径来确定可以放置一个插入符的下一个可视表示模型位置。一些视图可能是不可视的,它们的顺序可能与模型中的顺序不同,或者它们可能不允许访问模型中的某些位置。

参数:
pos - 要转换的位置,该值 >= 0
a - 为呈现分配的区域
direction - 以当前位置开始的方向,可以将它们设想为通常出现在键盘上的箭头键。它将是以下值之一:
  • SwingConstants.WEST
  • SwingConstants.EAST
  • SwingConstants.NORTH
  • SwingConstants.SOUTH
返回:
模型中的位置,它最能表示下一个可视位置的位置
抛出:
BadLocationException
IllegalArgumentException - 如果 direction 不具有上述合法值之一

modelToView

public abstract Shape modelToView(int pos,
                                  Shape a,
                                  Position.Bias b)
                           throws BadLocationException
为给定字符提供从文档模型坐标空间到视图坐标空间的映射。

参数:
pos - 所需字符的位置 (>=0)
a - 包围了请求字符的视图区域
b - 当位置是两个视图的边界时,该参数是离由偏移量表示的前一个字符或者下一个字符的偏差;b 将是这些值之一:
  • Position.Bias.Forward
  • Position.Bias.Backward
返回:
在视图坐标空间中,给定位置处的字符的边界框
抛出:
BadLocationException - 如果给定的位置不表示关联文档中的一个有效位置
IllegalArgumentException - 如果 b 上文列出的 Position.Bias 的合法值之一
另请参见:
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

modelToView

public Shape modelToView(int p0,
                         Position.Bias b0,
                         int p1,
                         Position.Bias b1,
                         Shape a)
                  throws BadLocationException
为给定区域提供从文档模型坐标空间到视图坐标空间的映射。给定区域被创建为第一个和最后一个字符位置的并集。

参数:
p0 - 第一个字符的位置 (>=0)
b0 - 当位置是两个视图的一个边界时,第一个字符位置离由偏移量表示的前一个字符或下一个字符的偏差;b0 将是这些值之一:
  • Position.Bias.Forward
  • Position.Bias.Backward
p1 - 最后一个字符的位置 (>=0)
b1 - 第二个字符位置的偏差,由上文所示的合法值之一来定义
a - 包围了请求区域的视图区域
返回:
边界框,它是由第一个和最后一个字符位置指定的区域的并集
抛出:
BadLocationException - 如果给定的位置不表示关联文档中的一个有效位置
IllegalArgumentException - 如果 b0 或者 b1 不是上文列出的 Position.Bias 的合法值之一
另请参见:
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

viewToModel

public abstract int viewToModel(float x,
                                float y,
                                Shape a,
                                Position.Bias[] biasReturn)
提供从视图坐标空间到模型的逻辑坐标空间的映射。将填写 biasReturn 参数来指示给定的点更接近于模型中的下一个字符还是前一个字符。

参数:
x - X 坐标,该值 >= 0
y - Y 坐标,该值 >= 0
a - 要在其中呈现的分配区域
返回:
模型中最能表示视图中给定点的位置,该值 >= 0。将填写 biasReturn 参数来指示给定的点更接近于模型中的下一个字符还是前一个字符。

insertUpdate

public void insertUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory f)
发出通知,通知在文档中此视图负责的某个位置已插入内容。为了减少子类的负担,此功能已分散到以下子类能重新实现的调用中:
  1. 如果此视图负责的元素发生任何更改,调用 updateChildren。如果此视图有表示子元素的子视图,则此方法应当做任何必须的操作来保证子视图正确表示模型。
  2. 要转发 DocumentEvent 到合适的子视图,调用 forwardUpdate
  3. 要给视图一个机会来修复其布局、重新计划布局或者不做任何操作,调用 updateLayout

参数:
e - 来自关联文档的更改信息
a - 视图的当前分配区域
f - 用于重建的工厂(如果该视图有子级)
另请参见:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory f)
给出从文档中此视图负责的位置移除了某些内容的通知。为了减少子类的负担,此功能已分散到以下子类能重新实现的调用中:
  1. 如果此视图负责的元素发生任何更改,则调用 updateChildren。如果此视图有表示子元素的子视图,则此方法应当做任何必须的操作来保证子视图正确表示模型。
  2. 要转发 DocumentEvent 到合适的子视图,调用 forwardUpdate
  3. 要给视图一个机会来修复其布局、重新计划布局或者不做任何操作,调用 updateLayout

参数:
e - 来自关联文档的更改信息
a - 视图的当前分配区域
f - 用于重建的工厂(如果该视图有子级)
另请参见:
removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

changedUpdate

public void changedUpdate(DocumentEvent e,
                          Shape a,
                          ViewFactory f)
发出通知,通知文档此视图负责的位置处的属性已更改。为了减少子类的负担,此功能已分散到以下子类能重新实现的调用中:
  1. 如果此视图负责的元素发生任何更改,则调用 updateChildren。如果此视图有表示子元素的子视图,则此方法应当做任何必须的操作来保证子视图正确表示模型。
  2. 要转发 DocumentEvent 到合适的子视图,调用 forwardUpdate
  3. 要给视图一个机会来修复其布局、重新计划布局或者不做任何操作,调用 updateLayout

参数:
e - 发自关联文档的更改信息
a - 视图的当前分配
f - 视图有子级时用于重建的工厂 View#changedUpdate

getDocument

public Document getDocument()
获取与视图关联的模型。

返回:
视图模型,如果没有则返回 null
另请参见:
getDocument()

getStartOffset

public int getStartOffset()
获取此视图负责的模型的一部分。

返回:
模型中的起始偏移量,该值 >= 0
另请参见:
getStartOffset()

getEndOffset

public int getEndOffset()
获取此视图负责的模型的一部分。

返回:
模型中的结尾偏移量,该值 >= 0
另请参见:
getEndOffset()

getElement

public Element getElement()
获取此视图所映射的主题的结构化部分。该视图可能没有负责元素的整个部分。

返回:
主题
另请参见:
getElement()

getGraphics

public Graphics getGraphics()
获取用于呈现的 Graphics。此方法可以用来确定字符特征,并且它对于打印视图和组件视图是不同的。

返回:
用于呈现的 Graphics 对象
从以下版本开始:
1.3

getAttributes

public AttributeSet getAttributes()
获取呈现时要使用的属性。默认情况下此方法只是返回关联元素的属性。应该使用此方法而不是直接使用元素来获得对属性的访问,从而允许特定于视图的属性被混合进来,或者允许视图具有通过子类的特定于视图的属性变换。每个视图应当记录为了呈现或布局的其能够识别的属性,并且应该总是通过此方法所返回的 AttributeSet 来访问它们。


breakView

public View breakView(int axis,
                      int offset,
                      float pos,
                      float len)
试图在给定的轴上拆分视图。此方法由试图对其子级进行格式化的视图调用。例如,一个段落的视图通常尝试将其子级置于行中,表示文本块的视图有时能被拆分成为更小的片。

实现此方法以返回视图本身,这表示在不可拆分时的默认行为。如果视图确实支持拆分,返回的视图的起始偏移量应当是给定的偏移量,并且结尾偏移量应当小于或者等于要被拆分的视图的结尾偏移量。

参数:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
offset - 文档模型中拆分段将占用的位置,该值 >= 0。这可能是该段返回的起始偏移量
pos - 拆分视图将沿轴占用的位置,该值 >= 0。这对制表符计算之类的操作很有用。
len - 指定所需的可能的拆分沿轴的距离,该值 >= 0
返回:
如果视图能被拆分,则返回表示给定跨距的视图段。如果视图不支持拆分行为,返回视图本身。
另请参见:
ParagraphView

createFragment

public View createFragment(int p0,
                           int p1)
创建一个表示元素某部分的视图。此方法在对视图段进行测量的格式化操作中可能很有用。如果视图不支持分段(默认),其应该返回视图本身。

参数:
p0 - 起始偏移量,该值 >= 0。此值应当是一个大于等于元素起始偏移量且小于元素结尾偏移量的值。
p1 - 结尾偏移量,该值 > p0。此值应当是一个小于等于元素结尾偏移量且大于元素起始偏移量的值。
返回:
视图段,如果视图不支持拆分成段,则返回视图本身
另请参见:
LabelView

getBreakWeight

public int getBreakWeight(int axis,
                          float pos,
                          float len)
确定此视图中拆分时机的权重大小。此方法能用于确定在格式化过程中最倾向调用 breakView 的视图。例如,表示其中具有空格的文本的视图可能比没有空格的视图更倾向拆分。权值越高,拆分的倾向性更大。等于或者小于 BadBreakWeight 的值不应被考虑进行拆分。大于或者等于 ForcedBreakWeight 值应该被拆分。

实现此方法以提供返回 BadBreakWeight 的默认行为,除非长度大于视图长度,在这种情况下整个视图表示一个段。除非一个视图被写入支持拆分行为,否则不倾向于试图并拆分视图。一定支持拆分的视图例子是 LabelView。使用拆分权值的视图示例是 ParagraphView

参数:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
pos - 拆分视图开始的可能的位置,该值 >= 0。这可能对于计算制表符位置很有用。
len - 指定自 pos(可能需要拆分的位置)的相对长度,该值 >= 0
返回:
权值,其应当是 ForcedBreakWeight 和 BadBreakWeight 之间的某个值
另请参见:
LabelView, ParagraphView, BadBreakWeight, GoodBreakWeight, ExcellentBreakWeight, ForcedBreakWeight

getResizeWeight

public int getResizeWeight(int axis)
确定视图沿给定轴的大小可调整性。对于小于或等于 0 的值,无法调整大小。

参数:
axis - 可能是 View.X_AXISView.Y_AXIS
返回:
权重

setSize

public void setSize(float width,
                    float height)
设置视图的大小。如果此方法有任何布局的职责,则它将促使视图沿给定轴进行布局。

参数:
width - 宽度,该值 >= 0
height - 高度,该值 >= 0

getContainer

public Container getContainer()
获取承载视图的容器。此方法对计划一次重绘、找出承载组件字体等操作很有用。此方法的默认实现是将查询转发给父视图。

返回:
容器,如果没有,则返回 null

getViewFactory

public ViewFactory getViewFactory()
获取将提供给视图层次结构的 ViewFactory 实现。通常将视图提供给此方法作为参数,以便在它们最可能需要该工厂的时候根据模型更新,但是在其他时候,此方法便以足够。

返回:
工厂,如果没有,则返回 null

getToolTipText

public String getToolTipText(float x,
                             float y,
                             Shape allocation)
返回提定位置的工具提示文本。默认实现返回传入位置标识的子 View 的值。

从以下版本开始:
1.4
另请参见:
JTextComponent.getToolTipText(java.awt.event.MouseEvent)

getViewIndex

public int getViewIndex(float x,
                        float y,
                        Shape allocation)
返回表示视图中给定位置的子视图索引。此方法迭代所有子级,返回第一个具有包含 xy 的边界的子级。

参数:
x - x 坐标
y - y 坐标
allocation - View 中的当前分配。
返回:
表示给定位置的视图索引,如果没有任何视图表示该位置,则返回 -1
从以下版本开始:
1.4

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec,
                                 DocumentEvent e,
                                 ViewFactory f)
更新子视图以响应接收模型变化的通知,并且有一条此视图负责的元素的变化记录。实现此方法以假定子视图直接负责此视图所表示的元素的子元素。ViewFactory 用来为每个元素创建子视图,这些子视图将从给定的 ElementChange 中指定的索引开始被添加到 ElementChange 中。移除表示已移除指定元素的子视图数目。

参数:
ec - 此视图所负责的元素的更改信息。如果调用此方法,该参赛不应当为 null
e - 来自关联文档的变化信息
f - 用于构建子视图的工厂
返回:
子视图是否表示此视图所负责的元素的子元素。某些视图创建表示其所负责的一部分元素的子级,其应当返回 false。此信息用于确定是否应该转发添加的元素范围中的视图
从以下版本开始:
1.3
另请参见:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

forwardUpdate

protected void forwardUpdate(DocumentEvent.ElementChange ec,
                             DocumentEvent e,
                             Shape a,
                             ViewFactory f)
将给定的 DocumentEvent 转发给需要被通知模型更改的子视图。如果此视图负责的元素发生了更改,则在转发时应当考虑该更改(即新子视图不应该获得通知)。

参数:
ec - 此视图所负责的元素的更改(如果没有任何更改,则为 null)。
e - 来自关联文档的更改信息
a - 视图的当前分配区域
f - 用于重建的工厂(如果该视图有子级)
从以下版本开始:
1.3
另请参见:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

forwardUpdateToView

protected void forwardUpdateToView(View v,
                                   DocumentEvent e,
                                   Shape a,
                                   ViewFactory f)
DocumentEvent 转发到给定的子视图。此方法只是根据实际类型,通过对 insertUpdateremoveUpdate 或者 changedUpdate 的调用来将消息传递给视图。此方法由 forwardUpdate 调用来将事件转发给需要它的子级。

参数:
v - 作为事件转发目标的子视图
e - 来自关联文档的更改信息
a - 视图的当前分配
f - 用于重建的工厂(如果视图有子级)
从以下版本开始:
1.3
另请参见:
forwardUpdate(javax.swing.event.DocumentEvent.ElementChange, javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

updateLayout

protected void updateLayout(DocumentEvent.ElementChange ec,
                            DocumentEvent e,
                            Shape a)
更新布局,以响应从模型接受的更改通知。如果 ElementChange 记录不为 null,则实现此方法来调用 preferenceChanged 以重新计划一个新的布局。

参数:
ec - 此视图所负责的元素的更改(如果没有任何更改则为 null
e - 来自关联文档的更改信息
a - 视图的当前分配
从以下版本开始:
1.3
另请参见:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

modelToView

@Deprecated
public Shape modelToView(int pos,
                                    Shape a)
                  throws BadLocationException
已过时。 

提供从文档模型坐标空间到所映射的视图坐标空间的映射。实现此方法以将偏差默认为前文提到的 Position.Bias.Forward

参数:
pos - 要转换的位置,该值 >= 0
a - 分配的要在其中呈现的区域
返回:
返回给定位置的边界框
抛出:
BadLocationException - 如果给定位置在所关联的文档中不是一个有效位置
另请参见:
modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

viewToModel

@Deprecated
public int viewToModel(float x,
                                  float y,
                                  Shape a)
已过时。 

提供从视图坐标空间到该模型的逻辑坐标空间的映射。

参数:
x - X 坐标,该值 >= 0
y - Y 坐标,该值 >= 0
a - 分配的要在其中呈现的区域
返回:
模型中最能代表视图中给定点的位置,该值 >= 0
另请参见:
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策