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()
返回与此
GraphicsDevice 所有
GraphicsConfiguration 对象。
|
abstract GraphicsConfiguration |
getDefaultConfiguration()
返回默认
GraphicsConfiguration 与此相关
GraphicsDevice 。
|
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 。
|
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
的标识字符串。
一个特定的程序可能会在一个GraphicsDevice
中使用多个GraphicsEnvironment
。 此方法返回一个String
标识GraphicsDevice
在本地GraphicsEnvironment
。 虽然没有公开的方法设置这个String
,程序员可以使用String
进行调试。 在Javaâ“¢运行时环境供应商可以格式化的返回值String
。 要确定如何解释的价值String
,请联系您的Java运行时的供应商。 要从您的程序中找出供应商是谁,请使用“java.vendor”调用System类的getProperty
方法。
String
是这个GraphicsDevice的
GraphicsDevice
。
public abstract GraphicsConfiguration[] getConfigurations()
GraphicsDevice
所有
GraphicsConfiguration
对象。
GraphicsDevice
一组
GraphicsConfiguration
对象。
public abstract GraphicsConfiguration getDefaultConfiguration()
GraphicsConfiguration
与此相关
GraphicsDevice
。
GraphicsDevice
的默认
GraphicsConfiguration
GraphicsDevice
。
public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
GraphicsConfigTemplate
中定义的标准的“最佳” 配置 。
gct
-
GraphicsConfigTemplate
对象用于获取有效的
GraphicsConfiguration
GraphicsConfiguration
即通过了指定定义的标准
GraphicsConfigTemplate
。
GraphicsConfigTemplate
public boolean isFullScreenSupported()
GraphicsDevice
支持全屏独占模式,则返回true
。
如果安装了SecurityManager,它将使用AWTPermission("fullScreenExclusive")
调用其checkPermission
方法。
isFullScreenSupported
仅在授予该权限isFullScreenSupported
返回true。
AWTPermission
public void setFullScreenWindow(Window w)
isFullScreenSupported
返回true
。
独家模式意味着:
Component.enableInputMethods(false)
使组件成为输入法框架的非客户端。 模拟全屏模式将窗口调整到屏幕最大可能的可见区域。 然而,本地窗口系统可以修改所请求的几何相关数据,使得Window
对象被放置并且以与桌面设置紧密对应的方式进行调整。
当进入全屏模式时,如果要用作全屏窗口的窗口不可见,则此方法将使其可见。 当返回到窗口模式时,它将保持可见。
当进入全屏模式时,所有的半透明效果都将重新设置为窗口。 其形状设置为null
,不透明度值设置为1.0f,背景色alpha设置为255(完全不透明)。 返回窗口模式时,这些值不会恢复。
如何在全屏模式下操作装饰窗口是未指定和依赖平台的。 因此,建议您使用setUndecorated
方法关闭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()
GraphicsDevice
支持低级显示更改,则返回true
。
在某些平台上,只有在全屏独占模式下(如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
刷新率的显示模式将导致从匹配宽度,高度和位深度的可用显示模式列表中选择显示模式。 但是,如果在getDisplayModes()
返回的列表中存在这种模式,则允许通过具有DisplayMode.BIT_DEPTH_MULTI
的位深度的显示模式。
示例代码:
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返回的数组中
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
对象的进一步查询方法可用于确定特定的VolatileImage是否已在加速内存中创建。
Image.flush()
,
ImageCapabilities.isAccelerated()
public boolean isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
translucencyKind
- 一种半透明支持