java.lang.Object
javax.swing.RepaintManager
该类管理重绘请求,允许最小化重绘次数,例如通过将多个请求合并为组件树成员的单个重绘。
从1.6版本开始,RepaintManager处理Swing顶层组件(JApplet、JWindow、JFrame和JDialog)的重绘请求。对其中一个调用repaint将调用适当的addDirtyRegion方法。
- 自:
- 1.2
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddDirtyRegion(Applet applet, int x, int y, int w, int h) 已弃用,将来会被移除:此API元素可能会在将来的版本中被移除。Applet API已弃用。voidaddDirtyRegion(Window window, int x, int y, int w, int h) 将window添加到需要重绘的Component列表中。voidaddDirtyRegion(JComponent c, int x, int y, int w, int h) 在应该刷新的组件列表中添加一个组件。voidaddInvalidComponent(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一起用作双缓冲区的易失性离屏缓冲区。booleanisCompletelyDirty(JComponent aComponent) 便利方法,如果在下一个paintDirtyRegions()调用期间aComponent将完全绘制,则返回true。boolean如果此RepaintManager是双缓冲的,则返回true。voidmarkCompletelyClean(JComponent aComponent) 标记组件完全干净。voidmarkCompletelyDirty(JComponent aComponent) 标记组件完全脏。void绘制所有已标记为脏的组件。voidremoveInvalidComponent(JComponent component) 从无效组件列表中移除一个组件。static voidsetCurrentManager(RepaintManager aRepaintManager) 设置应该用于调用线程的RepaintManager。voidsetDoubleBufferingEnabled(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
-