JavaTM 2 Platform
Standard Ed. 5.0

javax.swing.text
类 ParagraphView

java.lang.Object
  继承者 javax.swing.text.View
      继承者 javax.swing.text.CompositeView
          继承者 javax.swing.text.BoxView
              继承者 javax.swing.text.FlowView
                  继承者 javax.swing.text.ParagraphView
所有已实现的接口:
SwingConstants, TabExpander
直接已知子类:
ParagraphView

public class ParagraphView
extends FlowView
implements TabExpander

存在简单换行的段落的视图,其支持多种字体、颜色、组件、图标等。它基本上是周围有空白的纵向框。该框的内容是一组行,这些行是特殊的横向框。此视图创建表示段落元素的子元素的视图集合。如果这些视图合适,则可将其中的每个视图直接放到行中;否则,将调用 breakView 方法尝试将视图切割成合适的片段。

另请参见:
View

嵌套类摘要
 
从类 javax.swing.text.FlowView 继承的嵌套类/接口
FlowView.FlowStrategy
 
字段摘要
protected  int firstLineIndent
          相对于左边的 inset 进行的第一行的缩进。
 
从类 javax.swing.text.FlowView 继承的字段
layoutPool, layoutSpan, strategy
 
从类 javax.swing.text.View 继承的字段
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, 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
 
构造方法摘要
ParagraphView(Element elem)
          创建给定元素的 ParagraphView
 
方法摘要
protected  void adjustRow(javax.swing.text.ParagraphView.Row r, int desiredSpan, int x)
          如有可能,调整给定行以使其处于布局区域内。
 View breakView(int axis, float len, Shape a)
          以给定的长度在给定的轴上拆分此视图。
 void changedUpdate(DocumentEvent changes, Shape a, ViewFactory f)
          发出通知,通知文档中此视图负责的某个位置的属性已更改。
protected  View createRow()
          创建用于在流中存储子级行值的 View
protected  int findOffsetToCharactersInString(char[] string, int start)
          根据 string 中字符查找文档中的下一个字符,起点是偏移量 start
protected  boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
          确定下一个视图要布置的方向。
 float getAlignment(int axis)
          确定此视图沿某轴所需的对齐方式。
 int getBreakWeight(int axis, float len)
          获取给定位置的拆分权重。
protected  int getClosestPositionTo(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet, int rowIndex, int x)
          返回最接近 x 处的模型位置。
 int getFlowSpan(int index)
          获取给定子索引流入的约束区域。
 int getFlowStart(int index)
          获取沿流轴的流区域开始位置。
protected  View getLayoutView(int index)
          返回给定 index 处的视图。
protected  int getLayoutViewCount()
          返回此视图负责的视图数。
protected  int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          在东或西方向返回光标的下一个可视位置。
protected  float getPartialSize(int startOffset, int endOffset)
          返回 startOffsetendOffset 之间的视图使用的大小。
protected  float getTabBase()
          返回从中计算制表符的位置。
protected  TabSet getTabSet()
          获取计算制表符时使用的 Tabset
 float nextTabStop(float x, int tabOffset)
          返回给定了参照位置的下一个制表符位位置。
 void paint(Graphics g, Shape a)
          使用给定的呈现面和该面上的区域进行呈现。
protected  void setFirstLineIndent(float fi)
          设置第一行的行缩进量。
protected  void setJustification(int j)
          设置对齐方式的类型。
protected  void setLineSpacing(float ls)
          设置行间距。
protected  void setPropertiesFromAttributes()
          从属性集设置缓存的属性。
 
从类 javax.swing.text.FlowView 继承的方法
calculateMinorAxisRequirements, getFlowAxis, getViewIndexAtPosition, insertUpdate, layout, loadChildren, removeUpdate, setParent
 
从类 javax.swing.text.BoxView 继承的方法
baselineLayout, baselineRequirements, calculateMajorAxisRequirements, childAllocation, forwardUpdate, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel
 
从类 javax.swing.text.CompositeView 继承的方法
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets
 
从类 javax.swing.text.View 继承的方法
append, breakView, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateChildren, updateLayout, viewToModel
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

firstLineIndent

protected int firstLineIndent
相对于左边的 inset 进行的第一行的缩进。

构造方法详细信息

ParagraphView

public ParagraphView(Element elem)
创建给定元素的 ParagraphView

参数:
elem - 此视图负责的元素
方法详细信息

setJustification

protected void setJustification(int j)
设置对齐方式的类型。

参数:
j - 为下列值之一:
  • StyleConstants.ALIGN_LEFT
  • StyleConstants.ALIGN_CENTER
  • StyleConstants.ALIGN_RIGHT

setLineSpacing

protected void setLineSpacing(float ls)
设置行间距。

参数:
ls - 该值为行高的因子

setFirstLineIndent

protected void setFirstLineIndent(float fi)
设置第一行的行缩进量。

参数:
fi - 以磅 (point) 为单位的值

setPropertiesFromAttributes

protected void setPropertiesFromAttributes()
从属性集设置缓存的属性。


getLayoutViewCount

protected int getLayoutViewCount()
返回此视图负责的视图数。段落的子视图是已用于安排表示子元素的 View 片段的行。这是平铺在两个维数之间的视图数,此数应等于此视图负责的元素的子元素数。

返回:
ParagraphView 负责的视图数

getLayoutView

protected View getLayoutView(int index)
返回给定 index 处的视图。段落的子视图是已用于安排表示子元素的 View 片段的行。此方法返回负责子元素索引的视图(拆分前)。这些是从工厂生成(以表示子元素)且用于布局的 View。

参数:
index - 所需视图的 index
返回:
index 处的视图

adjustRow

protected void adjustRow(javax.swing.text.ParagraphView.Row r,
                         int desiredSpan,
                         int x)
如有可能,调整给定行以使其处于布局区域内。默认情况下,此操作将试图能在最接近行结尾的位置找到最高拆分权重。如果遇到强制拆分,则该拆分将定位于强制拆分的位置。

这是内部用法,不应直接使用。

参数:
r - 要调整到当前布局区域内的行
desiredSpan - 当前布局区域,该值 >= 0
x - r 开始处的位置

getNextNorthSouthVisualPositionFrom

protected int getNextNorthSouthVisualPositionFrom(int pos,
                                                  Position.Bias b,
                                                  Shape a,
                                                  int direction,
                                                  Position.Bias[] biasRet)
                                           throws BadLocationException
在东或西方向返回光标的下一个可视位置。通过 CompositeView 重写。

覆盖:
CompositeView 中的 getNextNorthSouthVisualPositionFrom
参数:
pos - 模型中的位置
b - Position.Bias.ForwardPosition.Bias.Backward
a - 要呈现的分配区域
direction - SwingConstants.NORTHSwingConstants.SOUTH
biasRet - 包含以此方法查到的偏差的数组
返回:
模型中表示下一个位置可视处的位置
抛出:
BadLocationException
另请参见:
CompositeView.getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])

getClosestPositionTo

protected int getClosestPositionTo(int pos,
                                   Position.Bias b,
                                   Shape a,
                                   int direction,
                                   Position.Bias[] biasRet,
                                   int rowIndex,
                                   int x)
                            throws BadLocationException
返回最接近 x 处的模型位置。rowIndex 是要在其中查找的视图对应的索引。

参数:
pos - 模型中的位置
a - 要呈现的分配区域
direction - 它是以下值之一:
  • SwingConstants.NORTH
  • SwingConstants.SOUTH
biasRet - 包含在此方法中查到的偏差的数组
rowIndex - 视图的索引
x - 需要的 x 坐标
返回:
最接近 x 的模型位置
抛出:
BadLocationException

flipEastAndWestAtEnds

protected boolean flipEastAndWestAtEnds(int position,
                                        Position.Bias bias)
确定下一个视图要布置的方向。假定 View 位于索引 n 处,通常 View 是从左向右放置的,所以在东面的 View 将位于索引 n + 1 处,在西面的 View 将位于索引 n - 1 处。在某些情况下(例如双向文本中)有可能东面的 View 不是位于 n + 1 处,而是位于 n - 1 处,或者西面的 View 不是位于 n - 1 处,而是位于索引 n + 1 处。这种情况下,该方法将返回 true,指示 View 按降序放置。

如果文本在某个位置从右向左布置,则返回 true;否则返回 false。

覆盖:
BoxView 中的 flipEastAndWestAtEnds
参数:
position - 模型中的位置
bias - Position.Bias.ForwardPosition.Bias.Backward
返回:
如果文本在某个位置从右向左布置,则返回 true;否则返回 false。

getFlowSpan

public int getFlowSpan(int index)
获取给定子索引流入的约束区域。

覆盖:
FlowView 中的 getFlowSpan
参数:
index - 查询视图的索引
返回:
index 处给定视图的约束区域
另请参见:
FlowView.getFlowStart(int)

getFlowStart

public int getFlowStart(int index)
获取沿流轴的流区域开始位置。

覆盖:
FlowView 中的 getFlowStart
参数:
index - 查询视图的索引
返回:
index 处给定视图的位置
另请参见:
FlowView.getFlowSpan(int)

createRow

protected View createRow()
创建用于在流中存储子级行值的 View

指定者:
FlowView 中的 createRow
返回:
新的 View

nextTabStop

public float nextTabStop(float x,
                         int tabOffset)
返回给定了参照位置的下一个制表符位位置。此视图实现制表符坐标系,并在布局进程中在逻辑子级上调用 getTabbedSpan,以确定该子级所需的区域。逻辑子级可以将其制表符扩展委托给知道如何扩展制表符的段落。LabelView 是将其制表符扩展需要委托给段落的视图的示例。

实现此方法以尝试在段落元素的属性集合中查找 TabSet。如果能找到一个制表符集,将使用其设置;否则将提供默认扩展。制表符扩展的基本位置是段落左部最近分配的位置(即子级布局的依据)。

指定者:
接口 TabExpander 中的 nextTabStop
参数:
x - X 引用位置
tabOffset - 在文本流内放置制表符的位置,该值 >= 0
返回:
制表符扩展的尾端,该值 >= 0
另请参见:
TabSet, TabStop, LabelView

getTabSet

protected TabSet getTabSet()
获取计算制表符时使用的 Tabset

返回:
TabSet

getPartialSize

protected float getPartialSize(int startOffset,
                               int endOffset)
返回 startOffsetendOffset 之间的视图使用的大小。如果子视图实现 TabableView 接口,则此方法将使用 getPartialView 计算该大小。如果需要某个大小,并且 View 未实现 TabableView 接口,则使用 preferredSpan

参数:
startOffset - 起始文档偏移量,该值 >= 0
endOffset - 结束文档偏移量,该值 >= startOffset
返回:
大小,该值 >= 0

findOffsetToCharactersInString

protected int findOffsetToCharactersInString(char[] string,
                                             int start)
根据 string 中字符查找文档中的下一个字符,起点是偏移量 start。如果找不到字符,则返回 -1。

参数:
string - 由字符组成的字符串
start - 模型中的起始位置,该值 >= 0
返回:
文档偏移量;如果找不到字符,则返回 -1

getTabBase

protected float getTabBase()
返回从中计算制表符的位置。

返回:
从中计算制表符的位置

paint

public void paint(Graphics g,
                  Shape a)
使用给定的呈现面和该面上的区域进行呈现。实现此方法以便在拆分用作制表符计算的基坐标之后委派给超类。

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

getAlignment

public float getAlignment(int axis)
确定此视图沿某轴所需的对齐方式。实现此方法以使第一行中心沿 y 轴对齐,而默认是沿 x 轴对齐。

覆盖:
BoxView 中的 getAlignment
参数:
axis - 可以是 View.X_AXIS,也可以是 View.Y_AXIS
返回:
所需的对齐方式。这应是 0.0 和 1.0 之间的值,其中 0.0 指示原点对齐,1.0 指示原点以外的整个区域对齐。0.5 对齐方式指视图中心对齐。

breakView

public View breakView(int axis,
                      float len,
                      Shape a)
以给定的长度在给定的轴上拆分此视图。

ParagraphView 实例只可沿 Y_AXIS 且只在 len 位于第一行之后时拆分。

参数:
axis - 可以是 View.X_AXIS,也可以是 View.Y_AXIS
len - 指定沿给定轴可能需要拆分的位置,该值 >= 0
a - 视图的当前分配区域
返回:
如果视图可以拆分,则返回表示给定区域的视图片段;如果视图不支持拆分行为,则返回视图本身
另请参见:
View.breakView(int, int, float, float)

getBreakWeight

public int getBreakWeight(int axis,
                          float len)
获取给定位置的拆分权重。

ParagraphView 实例只沿 Y_AXIS 且只在 len 位于第一行之后拆分。如果长度小于一行,则返回 BadBreakWeight 的值。

参数:
axis - 可以是 View.X_AXIS,也可以是 View.Y_AXIS
len - 指定可能需要拆分的位置,该值 >= 0
返回:
指示在此处拆分的可能性;GoodBreakWeightBadBreakWeight
另请参见:
View.getBreakWeight(int, float, float)

changedUpdate

public void changedUpdate(DocumentEvent changes,
                          Shape a,
                          ViewFactory f)
发出通知,通知文档中此视图负责的某个位置的属性已更改。

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

JavaTM 2 Platform
Standard Ed. 5.0

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

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