public abstract class GraphicsDevice extends Object
GraphicsDevice类描述图形的设备,可能会在一个特定的图形环境可。这些包括屏幕和打印机设备。注意,可以有很多的屏幕,在
GraphicsEnvironment实例许多打印机。每个图形设备具有一个或多个与之相关的
GraphicsConfiguration对象。这些对象指定的
GraphicsDevice可以使用不同的配置。
在多屏幕环境的GraphicsConfiguration对象可用于提供多屏幕组件。下面的代码示例演示如何创建一个JFrame对象为每个GraphicsConfiguration每屏装置在GraphicsEnvironment:
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。
| Modifier and Type | Class and Description |
|---|---|
static class |
GraphicsDevice.WindowTranslucency
半透明的底层系统支持的种类。
|
| Modifier and Type | Field and Description |
|---|---|
static int |
TYPE_IMAGE_BUFFER
设备是一个图像缓冲区。
|
static int |
TYPE_PRINTER
设备是一台打印机。
|
static int |
TYPE_RASTER_SCREEN
设备是一个光栅屏幕。
|
| Modifier | Constructor and Description |
|---|---|
protected |
GraphicsDevice()
这是一个抽象类不能被直接实例化。
|
| Modifier and Type | Method and Description |
|---|---|
int |
getAvailableAcceleratedMemory()
此方法返回此设备上的加速内存中可用的字节数。
|
GraphicsConfiguration |
getBestConfiguration(GraphicsConfigTemplate gct)
返回“最好”的配置成为可能,通过在
GraphicsConfigTemplate定义的标准。
|
abstract GraphicsConfiguration[] |
getConfigurations()
返回所有与此相关的
GraphicsConfiguration对象
GraphicsDevice。
|
abstract GraphicsConfiguration |
getDefaultConfiguration()
返回与此相关的默认
GraphicsConfiguration
GraphicsDevice。
|
DisplayMode |
getDisplayMode()
返回该
GraphicsDevice当前显示模式。
|
DisplayMode[] |
getDisplayModes()
返回可用于此
GraphicsDevice所有的显示模式。
|
Window |
getFullScreenWindow()
返回表示全屏幕窗口的
Window对象如果设备在全屏幕模式。
|
abstract String |
getIDstring()
返回与此相关的
GraphicsDevice字符串的识别。
|
abstract int |
getType()
返回该
GraphicsDevice类型。
|
boolean |
isDisplayChangeSupported()
返回
true如果这
GraphicsDevice支持底层显示变化。
|
boolean |
isFullScreenSupported()
返回
true如果这
GraphicsDevice支持全屏独占模式。
|
boolean |
isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
返回是否半透明给定的水平是由这个图形设备支持。
|
void |
setDisplayMode(DisplayMode dm)
设置此图形设备的显示模式。
|
void |
setFullScreenWindow(Window w)
进入全屏模式,或返回窗口模式。
|
public static final int TYPE_RASTER_SCREEN
public static final int TYPE_PRINTER
public static final int TYPE_IMAGE_BUFFER
public abstract int getType()
GraphicsDevice类型。
GraphicsDevice类型,可以type_raster_screen,type_printer或type_image_buffer。
TYPE_RASTER_SCREEN,
TYPE_PRINTER,
TYPE_IMAGE_BUFFER
public abstract String getIDstring()
GraphicsDevice关联的标识字符串。
一个特殊的程序可能在GraphicsEnvironment使用超过一个GraphicsDevice。此方法返回一个String识别在当地GraphicsEnvironment特定GraphicsDevice。虽然没有公开的方法来设置这个String,程序员可以使用String用于调试目的。java运行时环境的™厂商可以格式的String返回值。确定如何解释的String价值,联系你的java运行时供应商。找出谁是你的供应商,从程序,调用“java系统类的getProperty方法。供应商”。
String是这个
GraphicsDevice鉴定。
public abstract GraphicsConfiguration[] getConfigurations()
GraphicsConfiguration对象
GraphicsDevice。
GraphicsConfiguration的对象,这
GraphicsDevice关联数组。
public abstract GraphicsConfiguration getDefaultConfiguration()
GraphicsConfiguration
GraphicsDevice。
GraphicsDevice默认
GraphicsConfiguration。
public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
GraphicsConfigTemplate定义的标准。
gct用于获得一个有效的
GraphicsConfiguration的
GraphicsConfigTemplate对象
GraphicsConfiguration通过在指定的
GraphicsConfigTemplate定义的标准。
GraphicsConfigTemplate
public boolean isFullScreenSupported()
true如果这
GraphicsDevice支持全屏独占模式。如果要安装,其
checkPermission方法将被称为
AWTPermission("fullScreenExclusive")。
isFullScreenSupported返回true如果授予权限。
AWTPermission
public void setFullScreenWindow(Window w)
isFullScreenSupported返回
true独占模式下才可用。
独占模式意味着:
Component.enableInputMethods(false)使组件的输入法框架的非客户。模拟全屏模式的地方和调整窗口的最大可能的可见区域的画面。然而,本地窗口系统可以修改请求的几何相关的数据,使Window对象被放置和大小的一种方式,密切对应的桌面设置。
当进入全屏模式时,如果窗口被用作全屏窗口是不可见的,这种方法将使它可见。它依然可见当返回窗口模式。
当进入全屏模式,所有的半透明效果是窗口复位。它的形状设置为null,不透明度值设置为1.0f,和背景颜色Alpha设置为255(完全不透明)。这些值不恢复时返回窗口模式。
它是未指定的,平台依赖如何装饰的窗口在全屏模式下操作。为此,建议关掉装饰在Frame或Dialog利用setUndecorated方法对象。
当返回窗口模式从独家全屏窗口,通过调用setDisplayMode作出任何显示变化自动恢复到原来的状态。
w -窗口使用全屏窗口;
null如果返回窗口模式。一些平台预计全屏窗口是一个顶层的组件(例如,一个
Frame);因此,最好是在使用
Frame而不是
Window。
isFullScreenSupported(),
getFullScreenWindow(),
setDisplayMode(java.awt.DisplayMode),
Component.enableInputMethods(boolean),
Component.setVisible(boolean),
Frame.setUndecorated(boolean),
Dialog.setUndecorated(boolean)
public Window getFullScreenWindow()
Window对象如果设备在全屏幕模式。
null如果装置无法在全屏幕模式。
setFullScreenWindow(Window)
public boolean isDisplayChangeSupported()
true如果这
GraphicsDevice支持底层显示变化。在一些平台上的底层显示的变化只能在全屏独占模式允许的(即,如果
isFullScreenSupported()返回
true和应用已经使用
setFullScreenWindow(java.awt.Window)进入全屏模式)。
isFullScreenSupported(),
setDisplayMode(java.awt.DisplayMode),
setFullScreenWindow(java.awt.Window)
public void setDisplayMode(DisplayMode dm)
isDisplayChangeSupported()返回
true可能需要使用
setFullScreenWindow(java.awt.Window)提供全屏独占模式支持全屏独占模式进入第一(即
isFullScreenSupported()返回
true)。
显示模式必须是一个显示模式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 -如果
DisplayMode提供
null,或不可用的
getDisplayModes返回的数组
UnsupportedOperationException -如果
isDisplayChangeSupported返回
false
getDisplayMode(),
getDisplayModes(),
isDisplayChangeSupported()
public DisplayMode getDisplayMode()
GraphicsDevice当前显示模式。返回的显示方式是允许有一个刷新率
DisplayMode.REFRESH_RATE_UNKNOWN如果是不确定的。同样,返回的显示方式是允许如果多点深度的支持是不确定的或有一点深度
DisplayMode.BIT_DEPTH_MULTI。
setDisplayMode(DisplayMode)
public DisplayMode[] getDisplayModes()
GraphicsDevice所有的显示模式。返回的显示模式,允许有一个刷新率
DisplayMode.REFRESH_RATE_UNKNOWN如果是不确定的。同样,返回的显示模式允许如果多比特深度的支持是不确定的或有一点深度
DisplayMode.BIT_DEPTH_MULTI。
public int getAvailableAcceleratedMemory()
ImageCapabilities对象进一步的查询方法。
Image.flush(),
ImageCapabilities.isAccelerated()
public boolean isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
translucencyKind -一种半透明的支持
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.