JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 GraphicsDevice

java.lang.Object
  繼承者 java.awt.GraphicsDevice

public abstract class GraphicsDevice
extends Object

GraphicsDevice 類別描述可以在特定圖形環境中使用的圖形設備。這些設備包括螢幕和印表機設備。注意,在 GraphicsEnvironment 實例中可以有許多螢幕和許多印表機。每個圖形設備都有一個或多個與之關聯的 GraphicsConfiguration 物件。這些物件指定可以使用 GraphicsDevice 的不同配置。

在多螢幕環境中,GraphicsConfiguration 物件可用於在多螢幕上呈現元件。以下程式碼範例演示了如何在 GraphicsEnvironment 中針對每個螢幕設備的每個 GraphicsConfiguration 創建 JFrame 物件。

   GraphicsEnvironment ge = GraphicsEnvironment.
   getLocalGraphicsEnvironment();
   GraphicsDevice[] gs = ge.getScreenDevices();
   for (int j = 0; j < gs.length; j++) { 
      GraphicsDevice gd = gs[j];
      GraphicsConfiguration[] gc =
        gd.getConfigurations();
      for (int i=0; i < gc.length; i++) {
         JFrame f = new
         JFrame(gs[j].getDefaultConfiguration());
         Canvas c = new Canvas(gc[i]); 
         Rectangle gcBounds = gc[i].getBounds();
         int xoffs = gcBounds.x;
         int yoffs = gcBounds.y;
           f.getContentPane().add(c);
           f.setLocation((i*50)+xoffs, (i*60)+yoffs);
         f.show();
      }
   }
 

有關全屏獨佔網要 API 的更多資訊,請參閱 Full-Screen Exclusive Mode API Tutorial

另請參見:
GraphicsEnvironment, GraphicsConfiguration

欄位摘要
static int TYPE_IMAGE_BUFFER
          設備是圖像緩衝區。
static int TYPE_PRINTER
          設備是印表機。
static int TYPE_RASTER_SCREEN
          設備是光柵螢幕。
 
建構子摘要
protected GraphicsDevice()
          這是一個無法直接實例化的抽象類別。
 
方法摘要
 int getAvailableAcceleratedMemory()
          此方法返回此設備上加速記憶體中可用的位元組數。
 GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
          返回通過了 GraphicsConfigTemplate 中定義的標準的可能“最佳”配置。
abstract  GraphicsConfiguration[] getConfigurations()
          返回與此 GraphicsDevice 關聯的所有 GraphicsConfiguration 物件。
abstract  GraphicsConfiguration getDefaultConfiguration()
          返回與此 GraphicsDevice 關聯的預設 GraphicsConfiguration
 DisplayMode getDisplayMode()
          返回此 GraphicsDevice 的當前顯示網要。
 DisplayMode[] getDisplayModes()
          返回可用於此 GraphicsDevice 的所有顯示網要。
 Window getFullScreenWindow()
          如果設備處於全屏網要,則返回表示全屏視窗的 Window 物件。
abstract  String getIDstring()
          返回與此 GraphicsDevice 關聯的標識字元串。
abstract  int getType()
          返回此 GraphicsDevice 的型別。
 boolean isDisplayChangeSupported()
          如果此 GraphicsDevice 支持低層顯示更改,則返回 true
 boolean isFullScreenSupported()
          如果此 GraphicsDevice 支持全屏獨佔網要,則返回 true
 void setDisplayMode(DisplayMode dm)
          設置此圖形設備的顯示網要。
 void setFullScreenWindow(Window w)
          進入全屏網要,或返回視窗化網要。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

TYPE_RASTER_SCREEN

public static final int TYPE_RASTER_SCREEN
設備是光柵螢幕。

另請參見:
常數欄位值

TYPE_PRINTER

public static final int TYPE_PRINTER
設備是印表機。

另請參見:
常數欄位值

TYPE_IMAGE_BUFFER

public static final int TYPE_IMAGE_BUFFER
設備是圖像緩衝區。此緩衝區可駐留在設備或系統記憶體中,但使用者無法實際看到它。

另請參見:
常數欄位值
建構子詳細資訊

GraphicsDevice

protected GraphicsDevice()
這是一個無法直接實例化的抽象類別。必須從合適的處理器或查詢方法中獲取實例。

另請參見:
GraphicsEnvironment.getScreenDevices(), GraphicsEnvironment.getDefaultScreenDevice(), GraphicsConfiguration.getDevice()
方法詳細資訊

getType

public abstract int getType()
返回此 GraphicsDevice 的型別。

返回:
GraphicsDevice 的型別,可以是 TYPE_RASTER_SCREEN、TYPE_PRINTER 或 TYPE_IMAGE_BUFFER。
另請參見:
TYPE_RASTER_SCREEN, TYPE_PRINTER, TYPE_IMAGE_BUFFER

getIDstring

public abstract String getIDstring()
返回與此 GraphicsDevice 關聯的標識字元串。

GraphicsEnvironment 中,某個特定程序可能使用多個 GraphicsDevice。此方法返回一個標識本地 GraphicsEnvironment 中特定 GraphicsDeviceString。儘管沒有設置此 String 的公共方法,但開發人員仍然可以在除錯時使用此 String。JavaTM Runtime Environment 供應商可以格式化 String 的返回值。要確定如何解釋 String 值,請與 Java Runtime 供應商聯繫。要尋找誰是供應商,可以從程序中使用“java.vendor”調用 System 類別的 getProperty 方法。

返回:
一個作為此 GraphicsDevice 標識的 String

getConfigurations

public abstract GraphicsConfiguration[] getConfigurations()
返回與此 GraphicsDevice 關聯的所有 GraphicsConfiguration 物件。

返回:
一個與此 GraphicsDevice 關聯的 GraphicsConfiguration 物件的陣列。

getDefaultConfiguration

public abstract GraphicsConfiguration getDefaultConfiguration()
返回與此 GraphicsDevice 關聯的預設 GraphicsConfiguration

返回:
GraphicsDevice 的預設 GraphicsConfiguration

getBestConfiguration

public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
返回通過了 GraphicsConfigTemplate 中定義的標準的可能“最佳”配置。

參數:
gct - 用於獲取有效 GraphicsConfigurationGraphicsConfigTemplate 物件
返回:
一個通過了指定 GraphicsConfigTemplate 中定義的標準的 GraphicsConfiguration
另請參見:
GraphicsConfigTemplate

isFullScreenSupported

public boolean isFullScreenSupported()
如果此 GraphicsDevice 支持全屏獨佔網要,則返回 true。如果安裝了 SecurityManager,則將使用 AWTPermission("fullScreenExclusive") 調用它的 checkPermission 方法。只有授權時 isFullScreenSupported 才會返回 true。

返回:
此圖形設備是否可以使用全屏獨佔網要
從以下版本開始:
1.4
另請參見:
AWTPermission

setFullScreenWindow

public void setFullScreenWindow(Window w)
進入全屏網要,或返回視窗化網要。進入的全屏網要可以是獨佔的,也可以是模擬的。只有 isFullScreenSupported 返回 true 時,獨佔網要才可用。

獨佔網要意味著:

模擬的全屏網要將視窗大小調整為螢幕大小,並將它置於 (0,0)。

當進入全屏網要時,如果看不到作為全屏視窗使用的視窗,此方法將會使其可見。當返回到視窗化網要時,視窗仍將保持可見。

當從獨佔全屏視窗網要返回到視窗化網要時,任何調用 setDisplayMode 做出的顯示更改都將自動恢復原狀。

參數:
w - 一個用作全屏視窗的視窗;如果返回到視窗化網要,則為 null。一些平臺希望全屏視窗成為頂層元件(即 Frame);因此這裡最好使用 Frame,而不用 Window。
從以下版本開始:
1.4
另請參見:
isFullScreenSupported(), getFullScreenWindow(), setDisplayMode(java.awt.DisplayMode), Component.enableInputMethods(boolean), Component.setVisible(boolean)

getFullScreenWindow

public Window getFullScreenWindow()
如果設備處於全屏網要,則返回表示全屏視窗的 Window 物件。

返回:
全屏視窗;如果設備未在全屏網要,則返回 null
從以下版本開始:
1.4
另請參見:
setFullScreenWindow(Window)

isDisplayChangeSupported

public boolean isDisplayChangeSupported()
如果此 GraphicsDevice 支持低層顯示更改,則返回 true。某些平臺可能只在全屏獨佔網要中允許低層顯示更改(即如果 isFullScreenSupported() 返回 true,且應用程序已經使用 setFullScreenWindow(java.awt.Window) 進入全屏網要)。

返回:
此圖形設備是否支持低層顯示更改。
從以下版本開始:
1.4
另請參見:
setDisplayMode(java.awt.DisplayMode)

setDisplayMode

public void setDisplayMode(DisplayMode dm)
設置此圖形設備的顯示網要。只在 isDisplayChangeSupported() 返回 true 時才允許此方法,假如支持全屏獨佔網要的話(即 isFullScreenSupported() 返回 true),還可能要求首先使用 setFullScreenWindow(java.awt.Window) 進入全屏獨佔網要。

該顯示網要必須是由 getDisplayModes() 返回的顯示網要之一,只有一種情況例外:傳遞帶有 DisplayMode.REFRESH_RATE_UNKNOWN 刷新率的顯示網要時,將從帶有比對寬度、高度和位深的可用顯示網要列表中選擇一個顯示網要。但是,只有在位深為 DisplayMode.BIT_DEPTH_MULTI 的顯示網要存在於 getDisplayModes() 返回的列表中時,才能傳遞這種顯示網要。

程式碼範例:


 Frame frame;
 DisplayMode newDisplayMode;
 GraphicsDevice gd;
 // create a Frame, select desired DisplayMode from the list of modes
 // returned by gd.getDisplayModes() ...

 if (gd.isFullScreenSupported()) {
     gd.setFullScreenWindow(frame);
 } else {
    // proceed in non-full-screen mode
    frame.setSize(...);
    frame.setLocation(...);
    frame.setVisible(true);
 }

 if (gd.isDisplayChangeSupported()) {
     gd.setDisplayMode(newDisplayMode);
 }
 

參數:
dm - 此圖形設備的新顯示網要。
拋出:
IllegalArgumentException - 如果提供的 DisplayModenull,或者在 getDisplayModes 返回的陣列中不可用
UnsupportedOperationException - 如果 isDisplayChangeSupported 返回 false
從以下版本開始:
1.4
另請參見:
getDisplayMode(), getDisplayModes(), isDisplayChangeSupported()

getDisplayMode

public DisplayMode getDisplayMode()
返回此 GraphicsDevice 的當前顯示網要。如果返回的顯示網要是不確定的,則允許它具有 DisplayMode.REFRESH_RATE_UNKNOWN 刷新率。同樣,如果返回的顯示網要是不確定的或者支持多個位深,則允許它具有 DisplayMode.BIT_DEPTH_MULTI 位深。

返回:
此圖形設備的當前顯示網要。
從以下版本開始:
1.4
另請參見:
setDisplayMode(DisplayMode)

getDisplayModes

public DisplayMode[] getDisplayModes()
返回可用於此 GraphicsDevice 的所有顯示網要。如果返回的顯示網要是不確定的,則允許它具有 DisplayMode.REFRESH_RATE_UNKNOWN 刷新率。同樣,如果返回的顯示網要是不確定的或者支持多個位深,則允許它具有 DisplayMode.BIT_DEPTH_MULTI 位深。

返回:
此圖形設備可用的所有顯示網要。
從以下版本開始:
1.4

getAvailableAcceleratedMemory

public int getAvailableAcceleratedMemory()
此方法返回此設備上加速記憶體中可用的位元組數。某些圖像在加速記憶體中是按先來先服務的方式創建或快取記憶體的。在某些作業系統中,此記憶體是有限資源。調用此方法並慎重安排圖像的創建和刷新能夠使應用程序最有效地使用這些有限的資源。
注意,返回的數字是可用記憶體數量的快照;將某些圖像分派到該記憶體中可能仍然存在問題。例如,根據作業系統、驅動程序、記憶體配置和執行緒情況的不同,給定的圖像可能無法使用報告的全部記憶體空間。對於與 VolatileImage 關聯的 ImageCapabilities 物件,還有更多的查詢方法,可用於確定是否在加速記憶體中創建一個特殊的 VolatileImage。

返回:
加速記憶體中可用的位元組數。返回值為負指示此 GraphicsDevice 上的加速記憶體量是不確定的。
從以下版本開始:
1.4
另請參見:
Image.flush(), ImageCapabilities.isAccelerated()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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