- java.lang.Object
-
- java.awt.GraphicsDevice
-
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 。
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
GraphicsDevice.WindowTranslucency
底层系统支持的各种半透明。
-
字段汇总
字段 变量和类型 字段 描述 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()
返回所有的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()
如果GraphicsDevice
支持低级别显示更改,则返回true
。boolean
isFullScreenSupported()
如果GraphicsDevice
支持全屏独占模式,则返回true
。boolean
isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
返回此图形设备是否支持给定的半透明级别。void
setDisplayMode(DisplayMode dm)
设置此图形设备的显示模式。void
setFullScreenWindow(Window w)
进入全屏模式,或返回到窗口模式。
-
-
-
方法详细信息
-
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
关联的标识字符串。特定程序可能在
GraphicsDevice
中使用多个GraphicsEnvironment
。 此方法返回String
识别特定GraphicsDevice
在本地GraphicsEnvironment
。 虽然没有公共方法来设置String
,但程序员可以使用String
进行调试。 JavaString
运行时环境的供应商可以格式化String
的返回值。 要确定如何解释String
的值,请与Java Runtime的供应商联系。 要从程序中找出供应商是谁,请使用“java.vendor”调用System类的getProperty
方法。- 结果
-
a
String
是对此GraphicsDevice
的识别。
-
getConfigurations
public abstract GraphicsConfiguration[] getConfigurations()
返回与此GraphicsDevice
关联的所有GraphicsConfiguration
对象。- 结果
-
GraphicsConfiguration
与此GraphicsDevice
相关联的GraphicsConfiguration
对象的数组。
-
getDefaultConfiguration
public abstract GraphicsConfiguration getDefaultConfiguration()
返回默认GraphicsConfiguration
与此相关GraphicsDevice
。- 结果
-
默认
GraphicsConfiguration
如此GraphicsDevice
。
-
getBestConfiguration
public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
返回通过GraphicsConfigTemplate
中定义的条件的“最佳”配置。- 参数
-
gct
- 用于获取有效GraphicsConfiguration
的GraphicsConfigTemplate
对象 - 结果
-
GraphicsConfiguration
,它通过了指定的GraphicsConfigTemplate
定义的条件。 - 另请参见:
-
GraphicsConfigTemplate
-
isFullScreenSupported
public boolean isFullScreenSupported()
如果GraphicsDevice
支持全屏独占模式,则返回true
。 如果安装了SecurityManager,将使用AWTPermission("fullScreenExclusive")
调用其checkPermission
方法。isFullScreenSupported
仅在授予该权限isFullScreenSupported
返回true。- 结果
- 是否可以为此图形设备使用全屏独占模式
- 从以下版本开始:
- 1.4
- 另请参见:
-
AWTPermission
-
setFullScreenWindow
public void setFullScreenWindow(Window w)
进入全屏模式,或返回到窗口模式。 输入的全屏模式可以是独占模式,也可以是模拟模式。 独家模式仅在isFullScreenSupported
返回true
可用。独家模式意味着:
- Windows无法与全屏窗口重叠。 所有其他应用程序窗口将始终显示在Z顺序的全屏窗口下方。
- 任何时候设备上只能有一个全屏窗口,因此在存在全屏窗口时调用此方法将导致现有的全屏窗口返回窗口模式。
- 输入法窗口被禁用。 建议调用
Component.enableInputMethods(false)
使组件成为输入方法框架的非客户端。
模拟的全屏模式将窗口放置并调整窗口大小到屏幕的最大可见区域。 然而,本机窗口系统可以修改请求的几何结构相关的数据,从而使
Window
对象放置和尺寸在接近地对应于桌面设置的方式。进入全屏模式时,如果无法看到要用作全屏窗口的窗口,则此方法将使其可见。 返回窗口模式时它将保持可见状态。
进入全屏模式时,将为窗口重置所有半透明效果。 其形状设置为
null
,不透明度值设置为1.0f,背景颜色alpha设置为255(完全不透明)。 返回窗口模式时,不会恢复这些值。它是未指定的和平台相关的装饰窗口如何在全屏模式下操作。 因此,建议使用
setUndecorated
方法关闭Frame
或Dialog
对象中的装饰。从专用全屏窗口返回窗口模式时,通过调用
setDisplayMode
进行的任何显示更改都将自动恢复到其原始状态。- 参数
-
w
- 用作全屏窗口的窗口;null
如果返回窗口模式。 一些平台期望全屏窗口成为顶级组件(即Frame
); 因此,最好在这里使用Frame
而不是Window
。 - 从以下版本开始:
- 1.4
- 另请参见:
-
isFullScreenSupported()
,getFullScreenWindow()
,setDisplayMode(java.awt.DisplayMode)
,Component.enableInputMethods(boolean)
,Component.setVisible(boolean)
,Frame.setUndecorated(boolean)
,Dialog.setUndecorated(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
- 另请参见:
-
isFullScreenSupported()
,setDisplayMode(java.awt.DisplayMode)
,setFullScreenWindow(java.awt.Window)
-
setDisplayMode
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
返回的数组中不可用 -
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()
-
isWindowTranslucencySupported
public boolean isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
返回此图形设备是否支持给定的半透明级别。- 参数
-
translucencyKind
- 一种半透明的支持 - 结果
- 是否支持给定的半透明类型
- 从以下版本开始:
- 1.7
-
-