public abstract class GraphicsDevice extends Object
GraphicsDevice
class describes the graphics devices
that might be available in a particular graphics environment. These
include screen and printer devices. Note that there can be many screens
and many printers in an instance of GraphicsEnvironment
. Each
graphics device has one or more GraphicsConfiguration
objects
associated with it. These objects specify the different configurations
in which the GraphicsDevice
can be used.
In a multi-screen environment, the GraphicsConfiguration
objects can be used to render components on multiple screens. The
following code sample demonstrates how to create a JFrame
object for each GraphicsConfiguration
on each screen
device in the 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();
}
}
For more information on full-screen exclusive mode API, see the Full-Screen Exclusive Mode API Tutorial.
GraphicsEnvironment
,
GraphicsConfiguration
Modifier and Type | Class and Description |
---|---|
static class |
GraphicsDevice.WindowTranslucency
Kinds of translucency supported by the underlying system.
|
Modifier and Type | Field and Description |
---|---|
static int |
TYPE_IMAGE_BUFFER
Device is an image buffer.
|
static int |
TYPE_PRINTER
Device is a printer.
|
static int |
TYPE_RASTER_SCREEN
Device is a raster screen.
|
Modifier | Constructor and Description |
---|---|
protected |
GraphicsDevice()
This is an abstract class that cannot be instantiated directly.
|
Modifier and Type | Method and Description |
---|---|
int |
getAvailableAcceleratedMemory()
This method returns the number of bytes available in
accelerated memory on this device.
|
GraphicsConfiguration |
getBestConfiguration(GraphicsConfigTemplate gct)
Returns the "best" configuration possible that passes the
criteria defined in the
GraphicsConfigTemplate . |
abstract GraphicsConfiguration[] |
getConfigurations()
Returns all of the
GraphicsConfiguration
objects associated with this GraphicsDevice . |
abstract GraphicsConfiguration |
getDefaultConfiguration()
Returns the default
GraphicsConfiguration
associated with this GraphicsDevice . |
DisplayMode |
getDisplayMode()
Returns the current display mode of this
GraphicsDevice . |
DisplayMode[] |
getDisplayModes()
Returns all display modes available for this
GraphicsDevice . |
Window |
getFullScreenWindow()
Returns the
Window object representing the
full-screen window if the device is in full-screen mode. |
abstract String |
getIDstring()
Returns the identification string associated with this
GraphicsDevice . |
abstract int |
getType()
Returns the type of this
GraphicsDevice . |
boolean |
isDisplayChangeSupported()
Returns
true if this GraphicsDevice
supports low-level display changes. |
boolean |
isFullScreenSupported()
Returns
true if this GraphicsDevice
supports full-screen exclusive mode. |
boolean |
isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
Returns whether the given level of translucency is supported by
this graphics device.
|
void |
setDisplayMode(DisplayMode dm)
Sets the display mode of this graphics device.
|
void |
setFullScreenWindow(Window w)
Enter full-screen mode, or return to windowed mode.
|
public static final int TYPE_RASTER_SCREEN
public static final int TYPE_PRINTER
public static final int TYPE_IMAGE_BUFFER
protected GraphicsDevice()
public abstract int getType()
GraphicsDevice
.GraphicsDevice
, which can
either be TYPE_RASTER_SCREEN, TYPE_PRINTER or TYPE_IMAGE_BUFFER.TYPE_RASTER_SCREEN
,
TYPE_PRINTER
,
TYPE_IMAGE_BUFFER
public abstract String getIDstring()
GraphicsDevice
.
A particular program might use more than one
GraphicsDevice
in a GraphicsEnvironment
.
This method returns a String
identifying a
particular GraphicsDevice
in the local
GraphicsEnvironment
. Although there is
no public method to set this String
, a programmer can
use the String
for debugging purposes. Vendors of
the Java™ Runtime Environment can
format the return value of the String
. To determine
how to interpret the value of the String
, contact the
vendor of your Java Runtime. To find out who the vendor is, from
your program, call the
getProperty
method of the
System class with "java.vendor".
String
that is the identification
of this GraphicsDevice
.public abstract GraphicsConfiguration[] getConfigurations()
GraphicsConfiguration
objects associated with this GraphicsDevice
.GraphicsConfiguration
objects that are associated with this
GraphicsDevice
.public abstract GraphicsConfiguration getDefaultConfiguration()
GraphicsConfiguration
associated with this GraphicsDevice
.GraphicsConfiguration
of this GraphicsDevice
.public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
GraphicsConfigTemplate
.gct
- the GraphicsConfigTemplate
object
used to obtain a valid GraphicsConfiguration
GraphicsConfiguration
that passes
the criteria defined in the specified
GraphicsConfigTemplate
.GraphicsConfigTemplate
public boolean isFullScreenSupported()
true
if this GraphicsDevice
supports full-screen exclusive mode.
If a SecurityManager is installed, its
checkPermission
method will be called
with AWTPermission("fullScreenExclusive")
.
isFullScreenSupported
returns true only if
that permission is granted.AWTPermission
public void setFullScreenWindow(Window w)
isFullScreenSupported
returns true
.
Exclusive mode implies:
Component.enableInputMethods(false)
to make a component
a non-client of the input method framework.
The simulated full-screen mode places and resizes the window to the maximum
possible visible area of the screen. However, the native windowing system
may modify the requested geometry-related data, so that the Window
object
is placed and sized in a way that corresponds closely to the desktop settings.
When entering full-screen mode, if the window to be used as a full-screen window is not visible, this method will make it visible. It will remain visible when returning to windowed mode.
When entering full-screen mode, all the translucency effects are reset for
the window. Its shape is set to null
, the opacity value is set to
1.0f, and the background color alpha is set to 255 (completely opaque).
These values are not restored when returning to windowed mode.
It is unspecified and platform-dependent how decorated windows operate
in full-screen mode. For this reason, it is recommended to turn off
the decorations in a Frame
or Dialog
object by using the
setUndecorated
method.
When returning to windowed mode from an exclusive full-screen window,
any display changes made by calling setDisplayMode
are
automatically restored to their original state.
w
- a window to use as the full-screen window; null
if returning to windowed mode. Some platforms expect the
fullscreen window to be a top-level component (i.e., a Frame
);
therefore it is preferable to use a Frame
here rather than a
Window
.isFullScreenSupported()
,
getFullScreenWindow()
,
setDisplayMode(java.awt.DisplayMode)
,
Component.enableInputMethods(boolean)
,
Component.setVisible(boolean)
,
Frame.setUndecorated(boolean)
,
Dialog.setUndecorated(boolean)
public Window getFullScreenWindow()
Window
object representing the
full-screen window if the device is in full-screen mode.null
if the device is
not in full-screen mode.setFullScreenWindow(Window)
public boolean isDisplayChangeSupported()
true
if this GraphicsDevice
supports low-level display changes.
On some platforms low-level display changes may only be allowed in
full-screen exclusive mode (i.e., if isFullScreenSupported()
returns true
and the application has already entered
full-screen mode using setFullScreenWindow(java.awt.Window)
).isFullScreenSupported()
,
setDisplayMode(java.awt.DisplayMode)
,
setFullScreenWindow(java.awt.Window)
public void setDisplayMode(DisplayMode dm)
isDisplayChangeSupported()
returns true
and may
require first entering full-screen exclusive mode using
setFullScreenWindow(java.awt.Window)
providing that full-screen exclusive mode is
supported (i.e., isFullScreenSupported()
returns
true
).
The display mode must be one of the display modes returned by
getDisplayModes()
, with one exception: passing a display mode
with DisplayMode.REFRESH_RATE_UNKNOWN
refresh rate will result in
selecting a display mode from the list of available display modes with
matching width, height and bit depth.
However, passing a display mode with DisplayMode.BIT_DEPTH_MULTI
for bit depth is only allowed if such mode exists in the list returned by
getDisplayModes()
.
Example code:
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
- The new display mode of this graphics device.IllegalArgumentException
- if the DisplayMode
supplied is null
, or is not available in the array returned
by getDisplayModes
UnsupportedOperationException
- if
isDisplayChangeSupported
returns false
getDisplayMode()
,
getDisplayModes()
,
isDisplayChangeSupported()
public DisplayMode getDisplayMode()
GraphicsDevice
.
The returned display mode is allowed to have a refresh rate
DisplayMode.REFRESH_RATE_UNKNOWN
if it is indeterminate.
Likewise, the returned display mode is allowed to have a bit depth
DisplayMode.BIT_DEPTH_MULTI
if it is indeterminate or if multiple
bit depths are supported.setDisplayMode(DisplayMode)
public DisplayMode[] getDisplayModes()
GraphicsDevice
.
The returned display modes are allowed to have a refresh rate
DisplayMode.REFRESH_RATE_UNKNOWN
if it is indeterminate.
Likewise, the returned display modes are allowed to have a bit depth
DisplayMode.BIT_DEPTH_MULTI
if it is indeterminate or if multiple
bit depths are supported.public int getAvailableAcceleratedMemory()
ImageCapabilities
object
associated with a VolatileImage that can be used to determine
whether a particular VolatileImage has been created in accelerated
memory.Image.flush()
,
ImageCapabilities.isAccelerated()
public boolean isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
translucencyKind
- a kind of translucency support 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, 2023, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.