- java.lang.Object
-
- javax.swing.RepaintManager
-
public class RepaintManager extends Object
此类管理重绘请求,允许重绘的数量最小化,例如通过将多个请求压缩为组件树成员的单个重绘。由于1.6
RepaintManager
手柄重绘了Swing的顶层组件(请求JApplet
,JWindow
,JFrame
和JDialog
)。 到任何电话repaint
对这些人会打电话到相应的addDirtyRegion
方法。- 从以下版本开始:
- 1.2
-
-
构造方法摘要
构造方法 Constructor 描述 RepaintManager()
创建一个新的RepaintManager实例。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
addDirtyRegion(Applet applet, int x, int y, int w, int h)
已过时。Applet API已被弃用。 有关详细信息,请参阅java.applet package documentation 。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
currentManager(Component c)
返回给定组件的调用线程的RepaintManager。static RepaintManager
currentManager(JComponent c)
返回给指定JComponent的调用线程的RepaintManager。Rectangle
getDirtyRegion(JComponent aComponent)
返回组件当前的脏区域。Dimension
getDoubleBufferMaximumSize()
返回最大双缓冲区大小。Image
getOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
返回应使用组件c
作为双缓冲区的屏幕外缓冲区。Image
getVolatileOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
返回一个应该用作具有指定组件c
的双缓冲区的易失性屏幕缓冲区。boolean
isCompletelyDirty(JComponent aComponent)
如果 aComponent在下一个paintDirtyRegions()中将被完全绘制,则返回true的方便方法。boolean
isDoubleBufferingEnabled()
如果此RepaintManager是双缓冲的,则返回true。void
markCompletelyClean(JComponent aComponent)
标记一个组件完全干净。void
markCompletelyDirty(JComponent aComponent)
标记一个组件完全脏了void
paintDirtyRegions()
绘制所有被标记为脏的组件。void
removeInvalidComponent(JComponent component)
从无效组件列表中删除组件。static void
setCurrentManager(RepaintManager aRepaintManager)
设置应该用于调用线程的RepaintManager。void
setDoubleBufferingEnabled(boolean aFlag)
在此RepaintManager中启用或禁用双缓冲。void
setDoubleBufferMaximumSize(Dimension d)
设置最大双缓冲区大小。String
toString()
返回显示和标识此对象属性的字符串。void
validateInvalidComponents()
验证已标记为无效的所有组件。
-
-
-
方法详细信息
-
currentManager
public static RepaintManager currentManager(Component c)
返回给定组件的调用线程的RepaintManager。- 参数
-
c
- 默认实现中未使用的组件,但可以被覆盖版本使用,以根据组件返回不同的RepaintManager - 结果
- RepaintManager对象
-
currentManager
public static RepaintManager currentManager(JComponent c)
返回给指定JComponent的调用线程的RepaintManager。注意:此方法存在与早期版本的Swing库的向后二进制兼容性。 它只是返回
currentManager(Component)
返回的结果。- 参数
-
c
- 一个JComponent - 未使用 - 结果
- RepaintManager对象
-
setCurrentManager
public static void setCurrentManager(RepaintManager aRepaintManager)
设置应该用于调用线程的RepaintManager。 aRepaintManager将成为调用线程的线程组的当前RepaintManager。- 参数
-
aRepaintManager
- 要使用的RepaintManager对象
-
addInvalidComponent
public void addInvalidComponent(JComponent invalidComponent)
将组件标记为需要布局,并为事件分派线程队列运行,该线程将首先验证组件isValidateRoot()祖先。- 参数
-
invalidComponent
- 一个组件 - 另请参见:
-
JComponent.isValidateRoot()
,removeInvalidComponent(javax.swing.JComponent)
-
removeInvalidComponent
public void removeInvalidComponent(JComponent component)
从无效组件列表中删除组件。- 参数
-
component
- 一个组件 - 另请参见:
-
addInvalidComponent(javax.swing.JComponent)
-
addDirtyRegion
public void addDirtyRegion(JComponent c, int x, int y, int w, int h)
在要刷新的组件列表中添加一个组件。 如果c已经有一个脏区域,矩形(x,y,w,h)将与应该被重新绘制的区域相联。- 参数
-
c
- 要重新绘制的组件,null不会发生任何事情。 -
x
- 要重新绘制的区域的X坐标 -
y
- 重新绘制区域的Y坐标 -
w
- 要重新绘制的区域的宽度 -
h
- 重新绘制区域的高度 - 另请参见:
-
JComponent.repaint(long, int, int, int, int)
-
addDirtyRegion
public void addDirtyRegion(Window window, int x, int y, int w, int h)
将window
添加到需要重新绘制的Component
的列表中。- 参数
-
window
- 要重绘的窗口,null不会发生任何事情。 -
x
- 要重新绘制的区域的X坐标 -
y
- 要重新绘制的区域的Y坐标 -
w
- 要重新绘制的区域的宽度 -
h
- 重新绘制区域的高度 - 从以下版本开始:
- 1.6
- 另请参见:
-
JFrame.repaint(long, int, int, int, int)
,JWindow.repaint(long, int, int, int, int)
,JDialog.repaint(long, int, int, int, int)
-
addDirtyRegion
@Deprecated(since="9") public void addDirtyRegion(Applet applet, int x, int y, int w, int h)
将applet
添加到需要重新绘制的Component
的列表中。- 参数
-
applet
- 小程序重绘,null没有发生任何事情。 -
x
- 要重新绘制的区域的X坐标 -
y
- 重新绘制区域的Y坐标 -
w
- 要重新绘制的区域的宽度 -
h
- 重新绘制区域的高度 - 从以下版本开始:
- 1.6
- 另请参见:
-
JApplet.repaint(long, int, int, int, int)
-
getDirtyRegion
public Rectangle getDirtyRegion(JComponent aComponent)
返回组件当前的脏区域。 如果组件不脏,返回空矩形。- 参数
-
aComponent
- 一个组件 - 结果
- 该区域
-
markCompletelyDirty
public void markCompletelyDirty(JComponent aComponent)
标记一个组件完全脏了 aComponent将在下一个paintDirtyRegions()调用期间完全绘制。- 参数
-
aComponent
- 一个组件
-
markCompletelyClean
public void markCompletelyClean(JComponent aComponent)
标记一个组件完全干净。 在下一个paintDirtyRegions()调用中, aComponent不会被绘制。- 参数
-
aComponent
- 一个组件
-
isCompletelyDirty
public boolean isCompletelyDirty(JComponent aComponent)
如果aComponent在下一个paintDirtyRegions()中将被完全绘制,则返回true的方便方法。 如果计算脏区域对于您的组件来说是昂贵的,请使用此方法,如果返回true则避免计算脏区域。- 参数
-
aComponent
- 一个组件 - 结果
-
true
如果 在aComponent将在在下一个paintDirtyRegions中全部绘制()。
-
validateInvalidComponents
public void validateInvalidComponents()
验证已标记为无效的所有组件。
-
paintDirtyRegions
public void paintDirtyRegions()
绘制所有被标记为脏的组件。
-
getOffscreenBuffer
public Image getOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
返回应使用组件c
作为双缓冲区的屏幕外缓冲区。 默认情况下,每个RepaintManager都有一个双缓冲区。 缓冲区可能小于(proposedWidth,proposedHeight)
当为接收重绘管理器设置最大双缓冲区大小时,会发生这种情况。- 参数
-
c
- 组件 -
proposedWidth
- 缓冲区的宽度 -
proposedHeight
- 缓冲区的高度 - 结果
- 图片
-
getVolatileOffscreenBuffer
public Image getVolatileOffscreenBuffer(Component c, int proposedWidth, int proposedHeight)
返回一个应该用作具有指定组件c
的双缓冲区的易失性的屏幕外缓冲区。 返回的图像将是VolatileImage的实例,如果无法实例化VolatileImage对象,则返回null。 此缓冲区可能小于(proposedWidth,proposedHeight)
。 当为此重新绘制管理器设置最大双缓冲区大小时,会发生这种情况。- 参数
-
c
- 组件 -
proposedWidth
- 缓冲区的宽度 -
proposedHeight
- 缓冲区的高度 - 结果
- 易失图像
- 从以下版本开始:
- 1.4
- 另请参见:
-
VolatileImage
-
setDoubleBufferMaximumSize
public void setDoubleBufferMaximumSize(Dimension d)
设置最大双缓冲区大小。- 参数
-
d
- 维度
-
getDoubleBufferMaximumSize
public Dimension getDoubleBufferMaximumSize()
返回最大双缓冲区大小。- 结果
- 表示最大尺寸的Dimension对象
-
setDoubleBufferingEnabled
public void setDoubleBufferingEnabled(boolean aFlag)
在此RepaintManager中启用或禁用双缓冲。 小心:该属性的默认值设置为在给定平台上获得最佳涂料性能,不建议程序直接修改此属性。- 参数
-
aFlag
- true激活双缓冲 - 另请参见:
-
isDoubleBufferingEnabled()
-
isDoubleBufferingEnabled
public boolean isDoubleBufferingEnabled()
如果此RepaintManager是双缓冲的,则返回true。 此属性的默认值可能因平台而异。 在AWT支持原生双缓存的平台上,默认值为false
以避免Swing中不必要的缓冲。 在不支持原生双缓存的平台上,默认值为true
。- 结果
- 如果此对象是双缓冲的,则为true
-
-