|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.swing
类 JViewport
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JViewport
- 所有已实现的接口:
- ImageObserver, MenuContainer, Serializable, Accessible
-
public class JViewport
- extends JComponent
- implements Accessible
用于查看基础信息的“视口”或“观察孔”。在滚动时,移动部分称为视口。这好像通过照相机的取景器进行查看。将取景器向上移动会将图片顶部的内部移入视野,而底部的内容将消失。
默认情况下,JViewport
是不透明的。要进行更改,请使用 setOpaque
方法。
注:我们已实现了更快的滚动算法,不需要引入缓存。该算法的工作方式如下:
- 检查视图和父视图,了解它们是否为
JComponents
,如果不是,则停止,然后重绘整个视口。 - 如果视口由祖先遮掩,则停止,然后重绘整个视口。
- 计算将变为可见的区域,如果可见区域的大小与视口一样,则停止,然后重绘整个视图区域。
- 获取祖先
Window
的图形,并在滚动区域上执行copyArea
。 - 传递视图消息以重绘新的可见区域。
- 下次绘制将在视口上调用,如果剪贴区域小于视口大小,将开始使用计时器重绘整个区域。
copyArea
的开销。与非后备存储情况相比,此方法将大大减少绘制的区域。
当视口被另一窗口遮掩或者部分在屏幕外时,此方法比后备存储方法更慢。当另一窗口遮掩该视口时,copyArea 将复制垃圾,并且系统将生成一个绘制事件,通知我们绘制新露出的区域。处理这一情况的惟一方法是重绘整个视口,这可能比后备存储情形的速度要慢。在多数应用程序中,在视口被另一窗口遮掩或在屏幕外时,用户很少滚动它,因此,在被遮掩时,通常值得使用这一优化来提高性能。
警告:此类的序列化对象与以后的 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.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 |
字段详细信息 |
---|
isViewSizeSet
protected boolean isViewSizeSet
-
在确定视口的维数后为 true。默认值为 false。
lastPaintPosition
protected Point lastPaintPosition
-
我们绘制的最后一个
viewPosition
,因此我们知道有多少有效的后备存储图像。
backingStore
@Deprecated protected boolean backingStore
- 已过时。 从 Java 2 平台 v1.3 开始
-
当此视口正在维护其内容的一个屏幕外图像时,将为 true,这样可以使用快速的“位图传送”操作执行一些滚动,而不用通过视图对象来构造此显示。默认值为
false
。- 另请参见:
setScrollMode(int)
backingStoreImage
protected transient Image backingStoreImage
-
用于后备存储的视图图像。
scrollUnderway
protected boolean scrollUnderway
scrollUnderway
标志用于JList
之类的组件。当在JList
上按下向下箭头且所选单元格是列表中的最后一个单元格时,scrollpane
将自动滚动。这里,以前选中的单元格需要进行重绘,因此我们需要一个标志让该视口仅在存在对setViewPosition(Point)
的显式调用时执行优化的绘制。当通过其他途径调用setBounds
时,该标志关闭并且该视图按常规方法重绘。另一种方法是从JViewport
类中移除此标志,并让JList
通过使用setBackingStoreEnabled
管理此情形。默认值为false
。
BLIT_SCROLL_MODE
public static final int BLIT_SCROLL_MODE
-
使用
graphics.copyArea
来实现滚动。对多数应用程序而言,这是最快的方法。- 从以下版本开始:
- 1.3
- 另请参见:
setScrollMode(int)
, 常量字段值
BACKINGSTORE_SCROLL_MODE
public static final int BACKINGSTORE_SCROLL_MODE
-
将视口内容拉入屏幕外图像。这以前是
JTable
的默认模式。在某些情况下,此模式优于“位图传送模式”,但它需要大量的额外内存。- 从以下版本开始:
- 1.3
- 另请参见:
setScrollMode(int)
, 常量字段值