所有类


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 方法。

注:我们已实现了更快的滚动算法,不需要引入缓存。该算法的工作方式如下:

  1. 检查视图和父视图,了解它们是否为 JComponents,如果不是,则停止,然后重绘整个视口。
  2. 如果视口由祖先遮掩,则停止,然后重绘整个视口。
  3. 计算将变为可见的区域,如果可见区域的大小与视口一样,则停止,然后重绘整个视图区域。
  4. 获取祖先 Window 的图形,并在滚动区域上执行 copyArea
  5. 传递视图消息以重绘新的可见区域。
  6. 下次绘制将在视口上调用,如果剪贴区域小于视口大小,将开始使用计时器重绘整个区域。
一般情况下,此方法相当快。与后备存储方法相比,这避免了维护屏幕外缓冲区和必须执行两个 copyArea 的开销。与非后备存储情况相比,此方法将大大减少绘制的区域。

当视口被另一窗口遮掩或者部分在屏幕外时,此方法比后备存储方法更慢。当另一窗口遮掩该视口时,copyArea 将复制垃圾,并且系统将生成一个绘制事件,通知我们绘制新露出的区域。处理这一情况的惟一方法是重绘整个视口,这可能比后备存储情形的速度要慢。在多数应用程序中,在视口被另一窗口遮掩或在屏幕外时,用户很少滚动它,因此,在被遮掩时,通常值得使用这一优化来提高性能。

警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder

另请参见:
JScrollPane

嵌套类摘要
protected  classJViewport.AccessibleJViewport
          此类实现对 JViewport 类的可访问性支持。
protected  classJViewport.ViewListener
          视图的侦听器。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
protected  booleanbackingStore
          已过时。 从 Java 2 平台 v1.3 开始
static intBACKINGSTORE_SCROLL_MODE
          将视口内容拉入屏幕外图像。
protected  ImagebackingStoreImage
          用于后备存储的视图图像。
static intBLIT_SCROLL_MODE
          使用 graphics.copyArea 来实现滚动。
protected  booleanisViewSizeSet
          在确定视口的维数后为 true。
protected  PointlastPaintPosition
          我们绘制的最后一个 viewPosition,因此我们知道有多少有效的后备存储图像。
protected  booleanscrollUnderway
          scrollUnderway 标志用于 JList 之类的组件。
static intSIMPLE_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
 
方法摘要
 voidaddChangeListener(ChangeListener l)
          将一个 ChangeListener 添加到每次在视图的大小、位置或视口的扩展大小更改时都会得到通知的列表。
protected  voidaddImpl(Component child, Object constraints, int index)
          设置 JViewport 的轻量子对象,可以为 null
protected  booleancomputeBlit(int dx, int dy, Point blitFrom, Point blitTo, Dimension blitSize, Rectangle blitPaint)
          计算 blit 的参数,其中后备存储图像当前在左上角包含 oldLoc,并且我们滚动到 newLoc
protected  LayoutManagercreateLayoutManager()
          子类可以重写此方法以在该构造方法中安装一个不同布局的管理器(或者为 null)。
protected  JViewport.ViewListenercreateViewListener()
          为该视图创建侦听器。
protected  voidfirePropertyChange(String propertyName, Object oldValue, Object newValue)
          通知侦听器发生的属性更改。
protected  voidfireStateChanged()
          在视图的大小、位置或视口的扩展大小更改时通知所有 ChangeListeners
 AccessibleContextgetAccessibleContext()
          获取与此 JViewport 关联的 AccessibleContext。
 ChangeListener[]getChangeListeners()
          返回使用 addChangeListener() 添加到此 JViewport 的所有 ChangeListener 的数组。
 DimensiongetExtentSize()
          返回视图坐标中视图的可见部分的大小。
 InsetsgetInsets()
          返回 inset(边框)维数 (0,0,0,0),因为在 JViewport 上不支持边框。
 InsetsgetInsets(Insets insets)
          返回包含此 JViewport 的 inset 值的 inset 对象。
 intgetScrollMode()
          返回当前的滚动模式。
 ViewportUIgetUI()
          返回呈现此组件的 L&F 对象。
 StringgetUIClassID()
          返回指定呈现此组件的 L&F 类名称的字符串。
 ComponentgetView()
          返回 JViewport 的一个子对象或 null
 PointgetViewPosition()
          返回显示在视口左上角的视图坐标,如果不存在视图,则返回 0,0。
 RectanglegetViewRect()
          返回一个矩形,其原位置在 getViewPosition,大小为 getExtentSize
 DimensiongetViewSize()
          如果未显式设置视图的大小,则返回首选大小,否则返回该视图的当前大小。
 booleanisBackingStoreEnabled()
          已过时。 从 Java 2 平台 1.3 版开始,由 getScrollMode() 取代。
 booleanisOptimizedDrawingEnabled()
          JViewport 重写此方法(在 JComponent 中返回 false)的默认实现。
 voidpaint(Graphics g)
          通过后备存储绘制图像,或者使用后备存储“位图传送”剩余图像来仅绘制最新暴露的部分,这具体取决于是否启用 backingStore
protected  StringparamString()
          返回此 JViewport 的字符串表示形式。
 voidremove(Component child)
          移除 Viewport 的一个轻量子对象。
 voidremoveChangeListener(ChangeListener l)
          从每次在视图的大小、位置或视口的扩展大小更改时都会得到通知的列表中移除 ChangeListener
 voidrepaint(long tm, int x, int y, int w, int h)
          始终在父坐标系统中重绘,以确保 RepaintManager 仅执行一种绘制方法。
 voidreshape(int x, int y, int w, int h)
          设置此视口的边界。
 voidscrollRectToVisible(Rectangle contentRect)
          滚动该视图,使该视图中的 Rectangle 变得可见。
 voidsetBackingStoreEnabled(boolean enabled)
          已过时。 从 Java 2 平台 1.3 版开始,由 setScrollMode() 取代。
 voidsetBorder(Border border)
          视口通过常规父/子剪贴(一般该视图向滚动的相反方向移动)“滚动”其子视口(称为“视图”)。
 voidsetExtentSize(Dimension newExtent)
          使用视图坐标设置该视图可见部分的大小。
 voidsetScrollMode(int mode)
          用于控制滚动视口内容的方法。
 voidsetUI(ViewportUI ui)
          设置呈现此组件的 L&F 对象。
 voidsetView(Component view)
          设置 JViewport 的一个轻量子对象 (view),可以为 null
 voidsetViewPosition(Point p)
          设置显示在视口左上角的视图坐标,如果不存在视图,则不执行任何操作。
 voidsetViewSize(Dimension newSize)
          设置视图的大小。
 DimensiontoViewCoordinates(Dimension size)
          将一个大小的像素坐标转换为视图坐标。
 PointtoViewCoordinates(Point p)
          将一个点的像素坐标转换为视图坐标。
 voidupdateUI()
          从当前外观重置 UI 属性值。
 
从类 javax.swing.JComponent 继承的方法
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
从类 java.awt.Container 继承的方法
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
从类 java.awt.Component 继承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
从类 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), 常量字段值