|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object javax.swing.text.View javax.swing.text.AsyncBoxView
public class AsyncBoxView
异步执行布局处理的框。此类很有用,因为它可通过不在 GUI 事件线程中执行任何布局处理来保持该线程的持续活动。布局是在子视图的操作粒度上完成的。访问某部分布局的每个子视图后(可能是耗时的操作),可放弃剩余的任务,或者可执行新的、具有更高优先级的任务(如响应一个同步请求或对一个可见区域进行操作)。
访问子视图的同时,要获得关联文档上的读取锁定,这样该模型在被访问时是稳定的。
嵌套类摘要 | |
---|---|
class |
AsyncBoxView.ChildLocator
该类在本地化区域发生更改时,管理该本地化区域中子视图的有效位置。 |
class |
AsyncBoxView.ChildState
表示子视图布局状态的记录。 |
字段摘要 | |
---|---|
protected AsyncBoxView.ChildLocator |
locator
这是管理子视图偏移量的对象。 |
从类 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 |
构造方法摘要 | |
---|---|
AsyncBoxView(Element elem,
int axis)
构造执行异步布局处理的 BoxView。 |
方法摘要 | |
---|---|
protected AsyncBoxView.ChildState |
createChildState(View v)
通过此方法创建新的 ChildState 记录,以允许扩展 ChildState 记录的子类执行/保存更多状态。 |
protected void |
flushRequirementChanges()
将首选项中的更改向上发布到父视图。 |
float |
getBottomInset()
获得视图四周底部的空白部分。 |
Shape |
getChildAllocation(int index,
Shape a)
获取给定子视图的分配区域。 |
protected AsyncBoxView.ChildState |
getChildState(int index)
获取对象,该对象表示在给定索引位置的子视图的布局状态。 |
protected boolean |
getEstimatedMajorSpan()
主跨距当前是估计值吗? |
protected float |
getInsetSpan(int axis)
获取 insets 所占据的沿某个轴的跨距。 |
protected LayoutQueue |
getLayoutQueue()
获取用于布局处理的队列。 |
float |
getLeftInset()
获得视图四周左侧的空白部分。 |
int |
getMajorAxis()
获取主轴(即子级平铺时沿用的轴)。 |
float |
getMaximumSpan(int axis)
确定此视图沿某轴的最大跨距。 |
float |
getMinimumSpan(int axis)
确定此视图沿某轴的最小跨距。 |
int |
getMinorAxis()
获取辅轴(与平铺轴垂直的轴)。 |
int |
getNextVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet)
提供确定下一个以可视化形式表示的模型位置的方法,用户可以在此位置放置一个插入符。 |
float |
getPreferredSpan(int axis)
确定此视图沿某轴的首选跨距。 |
float |
getRightInset()
获得视图四周右侧的空白部分。 |
float |
getTopInset()
获得视图四周顶部的空白部分。 |
View |
getView(int n)
获得第 n 个子视图。 |
int |
getViewCount()
返回此视图中的视图数。 |
int |
getViewIndex(int pos,
Position.Bias b)
返回该模型中表示给定位置的子视图索引。 |
protected int |
getViewIndexAtPosition(int pos,
Position.Bias b)
获取此模型中表示给定位置的子视图索引。 |
protected void |
loadChildren(ViewFactory f)
加载初始化该视图的所有子级。 |
protected void |
majorRequirementChange(AsyncBoxView.ChildState cs,
float delta)
沿主轴上的要求更改。 |
protected void |
minorRequirementChange(AsyncBoxView.ChildState cs)
沿辅轴上的要求更改。 |
Shape |
modelToView(int pos,
Shape a,
Position.Bias b)
提供从文档模型坐标空间到所映射的视图坐标空间的映射。 |
void |
paint(Graphics g,
Shape alloc)
使用给定的分配和呈现表面呈现该视图。 |
void |
preferenceChanged(View child,
boolean width,
boolean height)
子视图可以在父级上调用此方法,以指示首选项已更改并且应该重新考虑布局。 |
void |
replace(int offset,
int length,
View[] views)
调用超类以更新子视图,并且更新子视图的状态记录。 |
void |
setBottomInset(float i)
设置视图四周底部的空白部分。 |
protected void |
setEstimatedMajorSpan(boolean isEstimated)
设置 estimatedMajorSpan 属性,它确定是否应该将主跨距视为估计值。 |
void |
setLeftInset(float i)
设置视图四周左侧的空白部分。 |
void |
setParent(View parent)
设置视图的父级。 |
void |
setRightInset(float i)
设置视图四周右侧的空白部分。 |
void |
setSize(float width,
float height)
设置视图的大小。 |
void |
setTopInset(float i)
设置视图四周顶部的空白部分。 |
protected void |
updateLayout(DocumentEvent.ElementChange ec,
DocumentEvent e,
Shape a)
更新布局,以响应从模型接收的更改通知。 |
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 |
字段详细信息 |
---|
protected AsyncBoxView.ChildLocator locator
构造方法详细信息 |
---|
public AsyncBoxView(Element elem, int axis)
elem
- 要表示的模型元素axis
- 平铺时沿用的轴。这可以是 X_AXIS 或 Y_AXIS 之一。方法详细信息 |
---|
public int getMajorAxis()
public int getMinorAxis()
public float getTopInset()
public void setTopInset(float i)
i
- inset 值public float getBottomInset()
public void setBottomInset(float i)
i
- inset 值public float getLeftInset()
public void setLeftInset(float i)
i
- inset 值public float getRightInset()
public void setRightInset(float i)
i
- inset 值protected float getInsetSpan(int axis)
axis
- 确定总的 insets 所沿用的轴,为 X_AXIS 或 Y_AXIS 之一。protected void setEstimatedMajorSpan(boolean isEstimated)
protected boolean getEstimatedMajorSpan()
protected AsyncBoxView.ChildState getChildState(int index)
index
- 子视图索引。这应该是一个 >= 0 且 < getViewCount() 的值。protected LayoutQueue getLayoutQueue()
protected AsyncBoxView.ChildState createChildState(View v)
protected void majorRequirementChange(AsyncBoxView.ChildState cs, float delta)
实现此方法以便将主轴标记为已更改,所以如果需要将要求发布到父视图,后续的检查可查看是否将主轴考虑在内。如果沿主轴的跨距不是估计值,则通过给定的 delta 更新它,以反映递增量。如果主跨距是估计值,则忽略 delta。
protected void minorRequirementChange(AsyncBoxView.ChildState cs)
protected void flushRequirementChanges()
public void replace(int offset, int length, View[] views)
View
中的 replace
offset
- 子视图中的起始偏移量,该值 >= 0length
- 要替换的现有视图数,该值 >= 0views
- 要插入的子视图protected void loadChildren(ViewFactory f)
通常在更改子元素时 Document 上会持有写入锁定,这可保持呈现和布局线程的安全。例外情况是初始化视图以表示现有的元素时(通过此方法),所以在进行初始化的时候它是同步的,以将 preferenceChanged 排除在外。
f
- 视图工厂setParent(javax.swing.text.View)
protected int getViewIndexAtPosition(int pos, Position.Bias b)
pos
- 位置,该值 >= 0
protected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
View
中的 updateLayout
ec
- 对此视图所负责的元素的更改(如果没有更改则可能为 null)。e
- 来自相关文档的更改信息a
- 该视图的当前分配区域View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,
View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,
View.changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
public void setParent(View parent)
loadChildren
方法。子级不应在构造方法中加载,因为设置父级的操作可能会导致其尝试向上搜索层次结构(例如获得宿主 Container)。如果此视图具有子视图(将该视图从视图层次结构中的一个位置移到另一个位置),则不调用 loadChildren
方法。
View
中的 setParent
parent
- 视图的父级,如果没有,则为 nullpublic void preferenceChanged(View child, boolean width, boolean height)
View
中的 preferenceChanged
child
- 子视图width
- 如果已更改宽度首选项,则为 trueheight
- 如果已更改高度首选项,则为 trueJComponent.revalidate()
public void setSize(float width, float height)
由于主轴是异步更新的,并且应该是已平铺子级的和,所以对于主轴应忽略该调用。由于辅轴是很灵活的,所以如果辅跨距更改了,则将工作放入队列以调整子视图的大小。
View
中的 setSize
width
- 宽度,该值 >= 0height
- 高度,该值 >= 0public void paint(Graphics g, Shape alloc)
实现此方法可确定要呈现的所需区域(如非剪贴区域)是否为最新的。如果是最新的,则呈现子视图。如果不是最新的,则将构建所需区域的任务作为最高优先级的任务放入布局队列中。在准备就绪时,此方法通过事件线程和渲染来持续运行,在尚未准备就绪时推迟一段时间(因为可以重新安排绘制请求)。
View
中的 paint
g
- 要使用的呈现表面alloc
- 要在其中进行呈现的已分配区域View.paint(java.awt.Graphics, java.awt.Shape)
public float getPreferredSpan(int axis)
View
中的 getPreferredSpan
axis
- 可以为 View.X_AXIS 或 View.Y_AXIS
IllegalArgumentException
- 如果轴类型无效View.getPreferredSpan(int)
public float getMinimumSpan(int axis)
View
中的 getMinimumSpan
axis
- 可以为 View.X_AXIS 或 View.Y_AXIS
IllegalArgumentException
- 如果轴类型无效View.getPreferredSpan(int)
public float getMaximumSpan(int axis)
View
中的 getMaximumSpan
axis
- 可以为 View.X_AXIS 或 View.Y_AXIS
IllegalArgumentException
- 如果轴类型无效View.getPreferredSpan(int)
public int getViewCount()
View
中的 getViewCount
View.getViewCount()
public View getView(int n)
View
中的 getView
n
- 要获得的视图编号,该值 >= 0 && < getViewCount()
public Shape getChildAllocation(int index, Shape a)
View
中的 getChildAllocation
index
- 子视图的索引,该值 >= 0 && < getViewCount()a
- 此视图的分配区域。
public int getViewIndex(int pos, Position.Bias b)
View
中的 getViewIndex
pos
- 位置,该值 >= 0
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
View
中的 modelToView
pos
- 要转换的位置,该值 >= 0a
- 要呈现于其中的已分配区域b
- 在该位置是两个视图的边界时,为偏向前一个字符或下一个字符的偏差,由偏移量表示。
BadLocationException
- 如果给定的位置不表示关联文档内的有效位置
IllegalArgumentException
- 如果 bias 参数无效View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
public int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
预计由 GUI 线程调用此方法,在关联的模型上保持读取锁定。实现此方法可定位子视图,并通过对 ChildLocator 对象执行锁定来确定其分配,以及通过对 ChildLocator 对象执行锁定对子视图调用 viewToModel,以避免与布局线程相互干扰。
View
中的 viewToModel
x
- X 坐标,该值 >= 0y
- Y 坐标,该值 >= 0a
- 要在其中进行呈现的已分配区域
public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
View
中的 getNextVisualPositionFrom
pos
- 要转换的位置,该值 >= 0a
- 要在其中进行呈现的已分配区域direction
- 从当前位置开始的方向,可以将它们设想为通常可在键盘上找到的箭头键;可为下列值:
SwingConstants.WEST
SwingConstants.EAST
SwingConstants.NORTH
SwingConstants.SOUTH
biasRet
- 包含要检查的偏差的数组
BadLocationException
IllegalArgumentException
- 如果 direction
无效
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。