- 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 。
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
GraphicsDevice.WindowTranslucency
底层系统支持的半透明度。
-
Field Summary
Fields Modifier and Type Field 描述 static int
TYPE_IMAGE_BUFFER
设备是一个图像缓冲区。static int
TYPE_PRINTER
设备是打印机。static int
TYPE_RASTER_SCREEN
设备是光栅画面。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
GraphicsDevice()
这是一个无法直接实例化的抽象类。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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()
返回true
如果这个GraphicsDevice
支持低级别的显示更改。boolean
isFullScreenSupported()
如果这个GraphicsDevice
支持全屏独占模式,则返回true
。boolean
isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
返回此图形设备是否支持给定的半透明级别。void
setDisplayMode(DisplayMode dm)
设置此图形设备的显示模式。void
setFullScreenWindow(Window w)
进入全屏模式,或返回窗口模式。
-
-
-
字段详细信息
-
TYPE_RASTER_SCREEN
public static final int TYPE_RASTER_SCREEN
设备是光栅画面。- 另请参见:
- Constant Field Values
-
TYPE_PRINTER
public static final int TYPE_PRINTER
设备是打印机。- 另请参见:
- Constant Field Values
-
TYPE_IMAGE_BUFFER
public static final int TYPE_IMAGE_BUFFER
设备是一个图像缓冲区。 该缓冲区可以驻留在设备或系统内存中,但不能由用户物理查看。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
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运行时的供应商。 要查找供应商是谁,从您的程序中,使用“java.vendor”调用System类的getProperty
方法。- 结果
-
一个
String
是这个GraphicsDevice
的标识。
-
getConfigurations
public abstract GraphicsConfiguration[] getConfigurations()
返回与此GraphicsDevice
相关联的所有GraphicsConfiguration
对象。- 结果
-
与该
GraphicsDevice
相关联的GraphicsConfiguration
对象的数组。
-
getDefaultConfiguration
public abstract GraphicsConfiguration getDefaultConfiguration()
返回默认GraphicsConfiguration
与此相关GraphicsDevice
。- 结果
-
默认
GraphicsConfiguration
这个GraphicsDevice
。
-
getBestConfiguration
public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
返回可能通过GraphicsConfigTemplate
中定义的条件的“最佳”配置。- 参数
-
gct
-GraphicsConfigTemplate
对象用于获取有效的GraphicsConfiguration
- 结果
-
一个
GraphicsConfiguration
,通过了指定的GraphicsConfigTemplate
定义的标准。 - 另请参见:
-
GraphicsConfigTemplate
-
isFullScreenSupported
public boolean isFullScreenSupported()
如果这个GraphicsDevice
支持全屏独占模式,则返回true
。 如果安装了SecurityManager,其checkPermission
方法将使用AWTPermission("fullScreenExclusive")
进行调用。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()
返回true
如果这个GraphicsDevice
支持低级显示更改。 在某些平台上,只能在全屏专用模式下允许低级显示更改(即,如果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
-
-