JavaTM 2 Platform
Standard Ed. 6

javax.swing
類別 RepaintManager

java.lang.Object
  繼承者 javax.swing.RepaintManager

public class RepaintManager
extends Object

此類別管理重繪請求,以最大限度地降低重繪次數。例如,通過將多個請求折疊到對元件階層樹成員的單個重繪中。

從 1.6 開始,RepaintManager 處理對 Swing 的頂層元件(JAppletJWindowJFrameJDialog)的重繪請求。在這些元件之一上對 repaint 的任何調用將產生適當的 addDirtyRegion 方法。


建構子摘要
RepaintManager()
          創建新的 RepaintManager 實例。
 
方法摘要
 void addDirtyRegion(Applet applet, int x, int y, int w, int h)
          將 applet 添加到需要重繪的 Component 列表。
 void addDirtyRegion(JComponent c, int x, int y, int w, int h)
          在應刷新的元件列表中添加元件。
 void addDirtyRegion(Window window, int x, int y, int w, int h)
          將 window 添加到需要重繪的 Component 列表。
 void addInvalidComponent(JComponent invalidComponent)
          按照佈局需要標記元件,並將事件指派執行緒的 runnable 排入佇列,該執行緒將驗證元件的第一個 isValidateRoot() 祖先。
static RepaintManager currentManager(Component c)
          在給定 Component 的情況下,返回調用執行緒的 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)
          在下一個 paintDirtyRegions() 中全部繪製 aComponent 時返回 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()
          驗證被標記為無效的所有元件。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

RepaintManager

public RepaintManager()
創建新的 RepaintManager 實例。很少直接調用此建構子。要獲取預設 RepaintManager,請使用 RepaintManager.currentManager(JComponent)(通常為 "this")。

方法詳細資訊

currentManager

public static RepaintManager currentManager(Component c)
在給定 Component 的情況下,返回調用執行緒的 RepaintManager。

參數:
c - 在預設實作中未使用的 Component,但是覆寫版本可以使用它,以根據 Component 返回不同的 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)
按照佈局需要標記元件,並將事件指派執行緒的 runnable 排入佇列,該執行緒將驗證元件的第一個 isValidateRoot() 祖先。

另請參見:
JComponent.isValidateRoot(), removeInvalidComponent(javax.swing.JComponent)

removeInvalidComponent

public void removeInvalidComponent(JComponent component)
從無效元件的列表移除元件。

另請參見:
addInvalidComponent(javax.swing.JComponent)

addDirtyRegion

public void addDirtyRegion(JComponent c,
                           int x,
                           int y,
                           int w,
                           int h)
在應刷新的元件列表中添加元件。如果 c 已有髒區 (dirty region),則矩形 (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

public void addDirtyRegion(Applet applet,
                           int x,
                           int y,
                           int w,
                           int h)
applet 添加到需要重繪的 Component 列表。

參數:
applet - 要重繪的 Applet,null 不執行任何操作。
x - 要重繪區域的 X 坐標
y - 要重繪區域的 Y 坐標
w - 要重繪區域的寬度
h - 要重繪區域的高度
從以下版本開始:
1.6
另請參見:
JApplet.repaint(long, int, int, int, int)

getDirtyRegion

public Rectangle getDirtyRegion(JComponent aComponent)
返回元件的當前髒區。如果元件不髒,則返回空矩形。


markCompletelyDirty

public void markCompletelyDirty(JComponent aComponent)
標記完全弄髒的元件。在下一個 paintDirtyRegions() 調用中,將全部繪製 aComponent


markCompletelyClean

public void markCompletelyClean(JComponent aComponent)
標記完全乾淨的元件。在下一個 paintDirtyRegions() 調用中,將不繪製 aComponent


isCompletelyDirty

public boolean isCompletelyDirty(JComponent aComponent)
在下一個 paintDirtyRegions() 中全部繪製 aComponent 時返回 true 的便捷方法。如果計算髒區對元件開銷很大,請使用此方法,避免在其返回 true 時計算髒區。


validateInvalidComponents

public void validateInvalidComponents()
驗證被標記為無效的所有元件。

另請參見:
addInvalidComponent(javax.swing.JComponent)

paintDirtyRegions

public void paintDirtyRegions()
繪製被標記為髒的所有元件。

另請參見:
addDirtyRegion(javax.swing.JComponent, int, int, int, int)

toString

public String toString()
返回一個顯示並標記此物件屬性的字元串。

覆寫:
類別 Object 中的 toString
返回:
此物件的字元串表示形式

getOffscreenBuffer

public Image getOffscreenBuffer(Component c,
                                int proposedWidth,
                                int proposedHeight)
返回螢幕外緩衝區,它應用作帶有元件 c 的雙緩衝區。預設情況下,每個 RepaintManager 都有一個雙緩衝。該緩衝可能比 (proposedWidth,proposedHeight) 小,當最大雙緩衝區的大小已設置為用於接收重繪管理器時,會發生這種情況。


getVolatileOffscreenBuffer

public Image getVolatileOffscreenBuffer(Component c,
                                        int proposedWidth,
                                        int proposedHeight)
返回可變螢幕外緩衝區,它應用作帶有指定元件 c 的雙緩衝區。返回的圖像將是 VolatileImage 的實例,如果 VolatileImage 物件無法實例化,則為 null。此緩衝區可能小於 (proposedWidth,proposedHeight)。當最大雙緩衝區的大小已設置為用於接收重繪管理器時,會發生這種情況。

從以下版本開始:
1.4
另請參見:
VolatileImage

setDoubleBufferMaximumSize

public void setDoubleBufferMaximumSize(Dimension 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

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only