java.lang.Object
javax.swing.RepaintManager
该类管理重绘请求,允许最小化重绘次数,例如通过将多个请求合并为组件树成员的单个重绘。
从1.6版本开始,RepaintManager
处理Swing顶层组件(JApplet
、JWindow
、JFrame
和JDialog
)的重绘请求。对其中一个调用repaint
将调用适当的addDirtyRegion
方法。
- 自:
- 1.2
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addDirtyRegion
(Applet applet, int x, int y, int w, int h) 已弃用,将来会被移除:此API元素可能会在将来的版本中被移除。Applet API已弃用。void
addDirtyRegion
(Window window, int x, int y, int w, int h) 将window
添加到需要重绘的Component
列表中。void
addDirtyRegion
(JComponent c, int x, int y, int w, int h) 在应该刷新的组件列表中添加一个组件。void
addInvalidComponent
(JComponent invalidComponent) 标记组件需要布局,并排队一个运行于事件分派线程的可运行对象,该对象将验证组件的第一个isValidateRoot()祖先。static RepaintManager
返回给定组件的调用线程的RepaintManager。static RepaintManager
返回给定JComponent的调用线程的RepaintManager。getDirtyRegion
(JComponent aComponent) 返回组件的当前脏区域。返回最大双缓冲区大小。getOffscreenBuffer
(Component c, int proposedWidth, int proposedHeight) 返回应与组件c
一起用作双缓冲区的离屏缓冲区。getVolatileOffscreenBuffer
(Component c, int proposedWidth, int proposedHeight) 返回应与指定组件c
一起用作双缓冲区的易失性离屏缓冲区。boolean
isCompletelyDirty
(JComponent aComponent) 便利方法,如果在下一个paintDirtyRegions()调用期间aComponent将完全绘制,则返回true。boolean
如果此RepaintManager是双缓冲的,则返回true。void
markCompletelyClean
(JComponent aComponent) 标记组件完全干净。void
markCompletelyDirty
(JComponent aComponent) 标记组件完全脏。void
绘制所有已标记为脏的组件。void
removeInvalidComponent
(JComponent component) 从无效组件列表中移除一个组件。static void
setCurrentManager
(RepaintManager aRepaintManager) 设置应该用于调用线程的RepaintManager。void
setDoubleBufferingEnabled
(boolean aFlag) 在此RepaintManager中启用或禁用双缓冲。void
设置最大双缓冲区大小。toString()
返回显示和标识此对象属性的字符串。void
验证所有已标记为无效的组件。
-
Constructor Details
-
RepaintManager
public RepaintManager()创建一个新的RepaintManager实例。您很少直接调用此构造函数。要获取默认的RepaintManager,请使用RepaintManager.currentManager(JComponent)(通常为"this")。
-
-
Method Details
-
currentManager
返回给定组件的调用线程的RepaintManager。- 参数:
-
c
- 一个组件--在默认实现中未使用,但可以由重写版本使用,根据组件返回不同的RepaintManager - 返回:
- RepaintManager对象
-
currentManager
返回给定JComponent的调用线程的RepaintManager。注意:此方法存在是为了向后二进制兼容早期版本的Swing库。它只是返回由
currentManager(Component)
返回的结果。- 参数:
-
c
- 一个JComponent--未使用 - 返回:
- RepaintManager对象
-
setCurrentManager
设置应该用于调用线程的RepaintManager。 aRepaintManager将成为调用线程的线程组的当前RepaintManager。- 参数:
-
aRepaintManager
- 要使用的RepaintManager对象
-
addInvalidComponent
标记组件需要布局,并排队一个运行于事件分派线程的可运行对象,该对象将验证组件的第一个isValidateRoot()祖先。- 参数:
-
invalidComponent
- 一个组件 - 参见:
-
removeInvalidComponent
从无效组件列表中移除一个组件。- 参数:
-
component
- 一个组件 - 参见:
-
addDirtyRegion
在应该刷新的组件列表中添加一个组件。如果c已经有一个脏区域,则矩形(x,y,w,h)将与应重绘的区域合并。- 参数:
-
c
- 要重绘的组件,null表示不执行任何操作。 -
x
- 重绘区域的X坐标 -
y
- 重绘区域的Y坐标 -
w
- 重绘区域的宽度 -
h
- 重绘区域的高度 - 参见:
-
addDirtyRegion
将window
添加到需要重绘的Component
列表中。- 参数:
-
window
- 要重绘的窗口,null表示不执行任何操作。 -
x
- 重绘区域的X坐标 -
y
- 重绘区域的Y坐标 -
w
- 重绘区域的宽度 -
h
- 重绘区域的高度 - 自:
- 1.6
- 参见:
-
addDirtyRegion
@Deprecated(since="9", forRemoval=true) public void addDirtyRegion(Applet applet, int x, int y, int w, int h) Deprecated, for removal: This API element is subject to removal in a future version.The Applet API is deprecated. See the java.applet package documentation for further information.将applet
添加到需要重绘的Component
列表中。- 参数:
-
applet
- 要重绘的Applet,null表示不执行任何操作。 -
x
- 重绘区域的X坐标 -
y
- 重绘区域的Y坐标 -
w
- 重绘区域的宽度 -
h
- 重绘区域的高度 - 自:
- 1.6
- 参见:
-
getDirtyRegion
返回组件的当前脏区域。如果组件未脏,则返回一个空矩形。- 参数:
-
aComponent
- 一个组件 - 返回:
- 区域
-
markCompletelyDirty
标记组件完全脏。在下一个paintDirtyRegions()调用期间,aComponent将完全绘制。- 参数:
-
aComponent
- 一个组件
-
markCompletelyClean
标记组件完全干净。在下一个paintDirtyRegions()调用期间,aComponent将不会被绘制。- 参数:
-
aComponent
- 一个组件
-
isCompletelyDirty
便利方法,如果在下一个paintDirtyRegions()调用期间aComponent将完全绘制,则返回true。如果计算组件的脏区域对您的组件很昂贵,请使用此方法,并在返回true时避免计算脏区域。- 参数:
-
aComponent
- 一个组件 - 返回:
-
如果在下一个paintDirtyRegions()调用期间aComponent将完全绘制,则返回
true
。
-
validateInvalidComponents
public void validateInvalidComponents()验证所有已标记为无效的组件。- 参见:
-
paintDirtyRegions
public void paintDirtyRegions()绘制所有已标记为脏的组件。- 参见:
-
toString
返回显示和标识此对象属性的字符串。 -
getOffscreenBuffer
返回应该与组件c
一起用作双缓冲区的离屏缓冲区。默认情况下,每个RepaintManager都有一个双缓冲区。如果接收到的RepaintManager的最大双缓冲区大小已设置,则缓冲区可能小于(proposedWidth,proposedHeight)
。- 参数:
-
c
- 组件 -
proposedWidth
- 缓冲区的宽度 -
proposedHeight
- 缓冲区的高度 - 返回:
- 图像
-
getVolatileOffscreenBuffer
返回应该与指定组件c
一起用作双缓冲区的易失性离屏缓冲区。返回的图像将是VolatileImage的一个实例,如果无法实例化VolatileImage对象,则返回null。此缓冲区可能小于(proposedWidth,proposedHeight)
。当为此RepaintManager设置了最大双缓冲区大小时,会发生这种情况。- 参数:
-
c
- 组件 -
proposedWidth
- 缓冲区的宽度 -
proposedHeight
- 缓冲区的高度 - 返回:
- 可变图像
- 自版本:
- 1.4
- 参见:
-
setDoubleBufferMaximumSize
设置最大双缓冲区大小。- 参数:
-
d
- 尺寸
-
getDoubleBufferMaximumSize
返回最大双缓冲区大小。- 返回:
- 代表最大尺寸的 Dimension 对象
-
setDoubleBufferingEnabled
public void setDoubleBufferingEnabled(boolean aFlag) 在此 RepaintManager 中启用或禁用双缓冲。注意: 此属性的默认值已设置为在给定平台上获得最佳绘制性能,不建议程序直接修改此属性。- 参数:
-
aFlag
- true 表示激活双缓冲 - 参见:
-
isDoubleBufferingEnabled
public boolean isDoubleBufferingEnabled()如果此 RepaintManager 是双缓冲的,则返回 true。此属性的默认值可能因平台而异。在支持 AWT 中的本机双缓冲的平台上,默认值将为false
,以避免在 Swing 中进行不必要的缓冲。在不支持本机双缓冲的平台上,默认值将为true
。- 返回:
- 如果此对象是双缓冲的,则返回 true
-