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.