|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JViewport
public class JViewport
用于查看底层信息的“视口”或“观察孔”。在滚动时,移动部分称为视口。这好像通过照相机的取景器进行查看。将取景器向上移动会将图片顶部的内部移入视野,而底部的内容将消失。
默认情况下,JViewport
是不透明的。要进行更改,请使用 setOpaque
方法。
注:我们已实现了更快的滚动算法,不需要引入缓存。该算法的工作方式如下:
JComponents
,如果不是,则停止,然后重绘整个视口。
Window
的图形,并在滚动区域上执行 copyArea
。
copyArea
的开销。与非后备存储情况相比,此方法将大大减少绘制的区域。
当视口被另一窗口遮掩或者部分在屏幕外时,此方法比后备存储方法更慢。当另一窗口遮掩该视口时,copyArea 将复制垃圾,并且系统将生成一个绘制事件,通知我们绘制新露出的区域。处理这一情况的惟一方法是重绘整个视口,这可能比后备存储情形的速度要慢。在多数应用程序中,在视口被另一窗口遮掩或在屏幕外时,用户很少滚动它,因此,在被遮掩时,通常值得使用这一优化来提高性能。
警告:Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
JScrollPane
嵌套类摘要 | |
---|---|
protected class |
JViewport.AccessibleJViewport
此类实现对 JViewport 类的可访问性支持。 |
protected class |
JViewport.ViewListener
视图的侦听器。 |
从类 javax.swing.JComponent 继承的嵌套类/接口 |
---|
JComponent.AccessibleJComponent |
从类 java.awt.Container 继承的嵌套类/接口 |
---|
Container.AccessibleAWTContainer |
从类 java.awt.Component 继承的嵌套类/接口 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
字段摘要 | |
---|---|
protected boolean |
backingStore
已过时。 从 Java 2 平台 v1.3 开始 |
static int |
BACKINGSTORE_SCROLL_MODE
将视口内容拉入屏幕外图像。 |
protected Image |
backingStoreImage
用于后备存储的视图图像。 |
static int |
BLIT_SCROLL_MODE
使用 graphics.copyArea 来实现滚动。 |
protected boolean |
isViewSizeSet
在确定视口的维数后为 true。 |
protected Point |
lastPaintPosition
我们绘制的最后一个 viewPosition ,因此我们知道有多少有效的后备存储图像。 |
protected boolean |
scrollUnderway
scrollUnderway 标志用于 JList 之类的组件。 |
static int |
SIMPLE_SCROLL_MODE
此模式使用非常简单的方法,在 scrollpane 每次滚动时重绘它的整个内容。 |
从类 javax.swing.JComponent 继承的字段 |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
从类 java.awt.Component 继承的字段 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
从接口 java.awt.image.ImageObserver 继承的字段 |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
构造方法摘要 | |
---|---|
JViewport()
创建一个 JViewport 。 |
方法摘要 | |
---|---|
void |
addChangeListener(ChangeListener l)
将一个 ChangeListener 添加到每次在视图的大小、位置或视口的扩展大小更改时都会得到通知的列表。 |
protected void |
addImpl(Component child,
Object constraints,
int index)
设置 JViewport 的轻量子对象,可以为 null 。 |
protected boolean |
computeBlit(int dx,
int dy,
Point blitFrom,
Point blitTo,
Dimension blitSize,
Rectangle blitPaint)
计算 blit 的参数,其中后备存储图像当前在左上角包含 oldLoc ,并且我们滚动到 newLoc 。 |
protected LayoutManager |
createLayoutManager()
子类可以重写此方法以在该构造方法中安装一个不同布局的管理器(或者为 null )。 |
protected JViewport.ViewListener |
createViewListener()
为该视图创建侦听器。 |
protected void |
firePropertyChange(String propertyName,
Object oldValue,
Object newValue)
通知侦听器发生的属性更改。 |
protected void |
fireStateChanged()
在视图的大小、位置或视口的扩展大小更改时通知所有 ChangeListeners 。 |
AccessibleContext |
getAccessibleContext()
获取与此 JViewport 关联的 AccessibleContext。 |
ChangeListener[] |
getChangeListeners()
返回使用 addChangeListener() 添加到此 JViewport 的所有 ChangeListener 的数组。 |
Dimension |
getExtentSize()
返回视图坐标中视图的可见部分的大小。 |
Insets |
getInsets()
返回 inset(边框)维数 (0,0,0,0),因为在 JViewport 上不支持边框。 |
Insets |
getInsets(Insets insets)
返回包含此 JViewport 的 inset 值的 inset 对象。 |
int |
getScrollMode()
返回当前的滚动模式。 |
ViewportUI |
getUI()
返回呈现此组件的 L&F 对象。 |
String |
getUIClassID()
返回指定呈现此组件的 L&F 类名称的字符串。 |
Component |
getView()
返回 JViewport 的一个子对象或 null 。 |
Point |
getViewPosition()
返回显示在视口左上角的视图坐标,如果不存在视图,则返回(0,0)。 |
Rectangle |
getViewRect()
返回一个矩形,其原位置在 getViewPosition ,大小为 getExtentSize 。 |
Dimension |
getViewSize()
如果未显式设置视图的大小,则返回首选大小,否则返回该视图的当前大小。 |
boolean |
isBackingStoreEnabled()
已过时。 从 Java 2 平台 1.3 版开始,由 getScrollMode() 取代。 |
boolean |
isOptimizedDrawingEnabled()
JViewport 重写此方法(在 JComponent 中返回 false)的默认实现。 |
void |
paint(Graphics g)
通过后备存储绘制图像,或者使用后备存储“位图传送”剩余图像来仅绘制最新暴露的部分,这具体取决于是否启用 backingStore 。 |
protected String |
paramString()
返回此 JViewport 的字符串表示形式。 |
void |
remove(Component child)
移除 Viewport 的一个轻量子对象。 |
void |
removeChangeListener(ChangeListener l)
从每次在视图的大小、位置或视口的扩展大小更改时都会得到通知的列表中移除 ChangeListener 。 |
void |
repaint(long tm,
int x,
int y,
int w,
int h)
始终在父坐标系统中重绘,以确保 RepaintManager 仅执行一种绘制方法。 |
void |
reshape(int x,
int y,
int w,
int h)
设置此视口的边界。 |
void |
scrollRectToVisible(Rectangle contentRect)
滚动该视图,使该视图中的 Rectangle 变得可见。 |
void |
setBackingStoreEnabled(boolean enabled)
已过时。 从 Java 2 平台 1.3 版开始,由 setScrollMode() 取代。 |
void |
setBorder(Border border)
视口通过常规父/子剪贴(一般该视图向滚动的相反方向移动)“滚动”其子视口(称为“视图”)。 |
void |
setExtentSize(Dimension newExtent)
使用视图坐标设置该视图可见部分的大小。 |
void |
setScrollMode(int mode)
用于控制滚动视口内容的方法。 |
void |
setUI(ViewportUI ui)
设置呈现此组件的 L&F 对象。 |
void |
setView(Component view)
设置 JViewport 的一个轻量子对象 (view ),可以为 null 。 |
void |
setViewPosition(Point p)
设置显示在视口左上角的视图坐标,如果不存在视图,则不执行任何操作。 |
void |
setViewSize(Dimension newSize)
设置视图的大小。 |
Dimension |
toViewCoordinates(Dimension size)
将一个大小的像素坐标转换为视图坐标。 |
Point |
toViewCoordinates(Point p)
将一个点的像素坐标转换为视图坐标。 |
void |
updateUI()
将 UI 属性重置为当前外观的值。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected boolean isViewSizeSet
protected Point lastPaintPosition
viewPosition
,因此我们知道有多少有效的后备存储图像。
@Deprecated protected boolean backingStore
false
。
setScrollMode(int)
protected transient Image backingStoreImage
protected boolean scrollUnderway
scrollUnderway
标志用于 JList
之类的组件。当在 JList
上按下向下箭头且所选单元格是列表中的最后一个单元格时,scrollpane
将自动滚动。这里,以前选中的单元格需要进行重绘,因此我们需要一个标志让该视口仅在存在对 setViewPosition(Point)
的显式调用时执行优化的绘制。当通过其他途径调用 setBounds
时,该标志关闭并且该视图按常规方法重绘。另一种方法是从 JViewport
类中移除此标志,并让 JList
通过使用 setBackingStoreEnabled
管理此情形。默认值为 false
。
public static final int BLIT_SCROLL_MODE
graphics.copyArea
来实现滚动。对多数应用程序而言,这是最快的方法。
setScrollMode(int)
,
常量字段值public static final int BACKINGSTORE_SCROLL_MODE
JTable
的默认模式。在某些情况下,此模式优于“位图传送模式”,但它需要大量的额外内存。
setScrollMode(int)
,
常量字段值public static final int SIMPLE_SCROLL_MODE
setScrollMode(int)
,
常量字段值构造方法详细信息 |
---|
public JViewport()
JViewport
。
方法详细信息 |
---|
public ViewportUI getUI()
ViewportUI
对象public void setUI(ViewportUI ui)
ui
- ViewportUI
L&F 对象UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
JComponent
中的 updateUI
JComponent.updateUI()
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
protected void addImpl(Component child, Object constraints, int index)
JViewport
的轻量子对象,可以为 null
。(由于只存在一个占用整个视口的子对象,因此忽略 constraints
和 index
参数。)
Container
中的 addImpl
child
- 视口的轻量 child
constraints
- 要考虑的 constraint
index
- 索引setView(java.awt.Component)
public void remove(Component child)
Viewport
的一个轻量子对象。
Container
中的 remove
child
- 要移除的组件setView(java.awt.Component)
public void scrollRectToVisible(Rectangle contentRect)
Rectangle
变得可见。
如果视图当前无效,则此操作将尝试在滚动前验证该视图 - isValid
返回 false。为避免在创建包含层次结构时验证时间过长,如果祖先之一没有同位体,或者不存在有效的根祖先,或者祖先之一不是 Window
或 Applet
,则不进行验证。
注意,此方法不会滚动到有效视口之外;例如,如果 contentRect
大于视口,滚动操作将限制在视口的边界之内。
JComponent
中的 scrollRectToVisible
contentRect
- 要显示的 Rectangle
JComponent.isValidateRoot()
,
Component.isValid()
,
Component.getPeer()
public final void setBorder(Border border)
null
边框或非零 inset,以防止此组件的几何结构复杂得无法禁止创建子类。要创建带边框的 JViewport
,请将其添加到具有边框的 JPanel
。
注:如果 border
为非 null
,此方法将抛出一个异常,原因是在 JViewPort
上不支持边框。
JComponent
中的 setBorder
border
- 要设置的 Border
IllegalArgumentException
- 未实现此方法Border
,
CompoundBorder
public final Insets getInsets()
JViewport
上不支持边框。
JComponent
中的 getInsets
Rectange
setBorder(javax.swing.border.Border)
public final Insets getInsets(Insets insets)
JViewport
的 inset 值的 inset
对象。重新初始化传入的 inset
对象,此对象中所有现有值都将被重写。
JComponent
中的 getInsets
insets
- 可以重用的 inset
对象
getInsets()
public boolean isOptimizedDrawingEnabled()
JViewport
重写此方法(在 JComponent
中返回 false)的默认实现。这确保了绘制机制将调用 Viewport
的 paint
实现,而不是直接通知 JViewport
的子对象。
JComponent
中的 isOptimizedDrawingEnabled
public void paint(Graphics g)
backingStore
。
术语“位图传送”是 PDP-10 BLT (BLock Transfer) 指令的 pronounced 版,该指令复制位块。(在您感到好奇时。)
JComponent
中的 paint
g
- 要在其中进行绘制的 Graphics
上下文JComponent.paintComponent(java.awt.Graphics)
,
JComponent.paintBorder(java.awt.Graphics)
,
JComponent.paintChildren(java.awt.Graphics)
,
JComponent.getComponentGraphics(java.awt.Graphics)
,
JComponent.repaint(long, int, int, int, int)
public void reshape(int x, int y, int w, int h)
StateChanged
事件。
JComponent
中的 reshape
x
- 原视口的左边缘y
- 原视口的上边缘w
- 以像素为单位的宽度h
- 以像素为单位的高度JComponent.reshape(int, int, int, int)
public void setScrollMode(int mode)
mode
- 下列值之一:
BLIT_SCROLL_MODE
,
BACKINGSTORE_SCROLL_MODE
,
SIMPLE_SCROLL_MODE
public int getScrollMode()
scrollMode
属性setScrollMode(int)
@Deprecated public boolean isBackingStoreEnabled()
getScrollMode()
取代。
true
。
scrollMode
为 BACKINGSTORE_SCROLL_MODE
,则返回 true
@Deprecated public void setBackingStoreEnabled(boolean enabled)
setScrollMode()
取代。
viewPosition
的较小一维更改的成本。我们使用 Graphics.copyArea
实现某些滚动,而不是重绘整个视口。
enabled
- 如果为 true,则维持一个屏幕外后备存储public Component getView()
JViewport
的一个子对象或 null
。
null
setView(java.awt.Component)
public void setView(Component view)
JViewport
的一个轻量子对象 (view
),可以为 null
。
view
- 该视口的新轻量子对象getView()
public Dimension getViewSize()
Dimension
对象public void setViewSize(Dimension newSize)
newSize
- 指定视图新大小的 Dimension
对象public Point getViewPosition()
Point
对象public void setViewPosition(Point p)
p
- 给出左上角坐标的 Point
对象public Rectangle getViewRect()
getViewPosition
,大小为 getExtentSize
。这是视图在视图坐标中的可见部分。
Rectangle
。protected boolean computeBlit(int dx, int dy, Point blitFrom, Point blitTo, Dimension blitSize, Rectangle blitPaint)
oldLoc
,并且我们滚动到 newLoc
。已修改该参数以返回 blit 所需的值。
dx
- 水平 deltady
- 垂直 deltablitFrom
- 我们从中传送的 Point
blitTo
- 我们传送的 Point
blitSize
- 要传送的区域的 Dimension
blitPaint
- 要传送的区域
public Dimension getExtentSize()
Dimension
对象public Dimension toViewCoordinates(Dimension size)
size
- 使用像素坐标的 Dimension
对象
Dimension
对象public Point toViewCoordinates(Point p)
p
- 使用像素坐标的 Point
对象
Point
对象public void setExtentSize(Dimension newExtent)
newExtent
- 指定视图大小的 Dimension
对象protected JViewport.ViewListener createViewListener()
ViewListener
protected LayoutManager createLayoutManager()
null
)。返回要在 JViewport
上安装的 LayoutManager
。
LayoutManager
public void addChangeListener(ChangeListener l)
ChangeListener
添加到每次在视图的大小、位置或视口的扩展大小更改时都会得到通知的列表。
l
- 要添加的 ChangeListener
removeChangeListener(javax.swing.event.ChangeListener)
,
setViewPosition(java.awt.Point)
,
setViewSize(java.awt.Dimension)
,
setExtentSize(java.awt.Dimension)
public void removeChangeListener(ChangeListener l)
ChangeListener
。
l
- 要移除的 ChangeListener
addChangeListener(javax.swing.event.ChangeListener)
public ChangeListener[] getChangeListeners()
ChangeListener
的数组。
ChangeListener
,如果未添加侦听器,则返回一个空数组protected void fireStateChanged()
ChangeListeners
。
addChangeListener(javax.swing.event.ChangeListener)
,
removeChangeListener(javax.swing.event.ChangeListener)
,
EventListenerList
public void repaint(long tm, int x, int y, int w, int h)
RepaintManager
仅执行一种绘制方法。
JComponent
中的 repaint
tm
- 更新前等待的最长时间(以毫秒为单位)x
- x
坐标(像素从左端向上)y
- y
坐标(像素从顶部向下)w
- 宽度h
- 高度Component.update(java.awt.Graphics)
protected String paramString()
JViewport
的字符串表示形式。此方法仅在进行调试的时候使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可能为空,但不可能为 null
。
JComponent
中的 paramString
JViewport
的字符串表示形式protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
windowBlit
属性。(putClientProperty
属性为最后属性)。
Component
中的 firePropertyChange
propertyName
- 包含属性名的字符串oldValue
- 属性的旧值newValue
- 属性的新值public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。