Класс 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 монопольного полноэкранного режима см. в руководстве по API монопольного полноэкранного режима.
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
GraphicsDevice.WindowTranslucency |
Типы прозрачности, поддерживаемые базовой системой. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
TYPE_IMAGE_BUFFER |
Устройство является буфером изображения. |
static final int |
TYPE_PRINTER |
Устройство является принтером. |
static final int |
TYPE_RASTER_SCREEN |
Устройство является растровым экраном. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Это абстрактный класс, экземпляр которого нельзя создать напрямую. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
getAvailableAcceleratedMemory() |
Этот метод возвращает количество байтов, доступных в ускоренной памяти данного устройства. |
GraphicsConfiguration |
getBestConfiguration |
Возвращает наилучшую возможную конфигурацию, соответствующую критериям, заданным в 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 |
Возвращает, поддерживает ли это графическое устройство заданный уровень прозрачности. |
void |
setDisplayMode |
Устанавливает режим отображения этого графического устройства. |
void |
setFullScreenWindow |
Переходит в полноэкранный режим или возвращается в оконный режим. |
Подробное описание полей
TYPE_RASTER_SCREEN
public static final int TYPE_RASTER_SCREEN
- См. также:
TYPE_PRINTER
public static final int TYPE_PRINTER
- См. также:
TYPE_IMAGE_BUFFER
public static final int TYPE_IMAGE_BUFFER
- См. также:
Подробное описание конструкторов
GraphicsDevice
protected GraphicsDevice()
- См. также:
Подробное описание методов
getType
public abstract int getType()
GraphicsDevice.- Возвращает:
- тип этого
GraphicsDevice, которым может быть TYPE_RASTER_SCREEN, TYPE_PRINTER или TYPE_IMAGE_BUFFER. - См. также:
getIDstring
public abstract String getIDstring()
GraphicsDevice. В конкретной программе может использоваться несколько объектов GraphicsDevice в GraphicsEnvironment. Этот метод возвращает String, идентифицирующую конкретный GraphicsDevice в локальной GraphicsEnvironment. Хотя общедоступного метода для установки этого String нет, программист может использовать String в целях отладки. Поставщики среды выполнения Java могут задавать формат возвращаемого значения String. Чтобы определить, как интерпретировать значение String, обратитесь к поставщику среды выполнения Java. Чтобы узнать, кто является поставщиком, вызовите в своей программе метод getProperty класса System с аргументом "java.vendor".
- Возвращает:
String, идентифицирующую этотGraphicsDevice.
getConfigurations
public abstract GraphicsConfiguration[] getConfigurations()
GraphicsConfiguration, связанные с этим GraphicsDevice.- Возвращает:
- массив объектов
GraphicsConfiguration, связанных с этимGraphicsDevice.
getDefaultConfiguration
public abstract GraphicsConfiguration getDefaultConfiguration()
GraphicsConfiguration по умолчанию, связанную с этим GraphicsDevice.- Возвращает:
- конфигурацию
GraphicsConfigurationпо умолчанию для этогоGraphicsDevice.
getBestConfiguration
public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
GraphicsConfigTemplate.- Параметры:
-
gct— объектGraphicsConfigTemplate, используемый для получения допустимогоGraphicsConfiguration - Возвращает:
- объект
GraphicsConfiguration, соответствующий критериям, заданным в указанномGraphicsConfigTemplate. - См. также:
isFullScreenSupported
public boolean isFullScreenSupported()
true, если этот GraphicsDevice поддерживает монопольный полноэкранный режим.- Возвращает:
- доступен ли для этого графического устройства монопольный полноэкранный режим
- Начиная с:
- 1.4
setFullScreenWindow
public void setFullScreenWindow(Window w)
isFullScreenSupported возвращает true. Монопольный режим означает следующее:
- Окна не могут перекрывать полноэкранное окно. Все остальные окна приложений всегда будут располагаться ниже полноэкранного окна в порядке Z.
- На устройстве одновременно может быть только одно полноэкранное окно, поэтому вызов этого метода при наличии уже открытого полноэкранного окна вернёт его в оконный режим.
- Окна методов ввода отключаются. Рекомендуется вызвать
Component.enableInputMethods(false), чтобы сделать компонент не принадлежащим инфраструктуре методов ввода.
Эмулируемый полноэкранный режим размещает окно на экране и изменяет его размер до максимально возможной видимой области. Однако собственная оконная система может изменить запрошенные геометрические параметры, чтобы объект Window был размещён и имел размер, соответствующие настройкам рабочего стола.
При переходе в полноэкранный режим, если окно, которое будет использоваться в качестве полноэкранного, невидимо, этот метод сделает его видимым. При возврате в оконный режим оно останется видимым.
При переходе в полноэкранный режим все эффекты прозрачности окна сбрасываются. Его форма устанавливается в null, значение непрозрачности — в 1.0f, а альфа-канал цвета фона — в 255 (полная непрозрачность). При возврате в оконный режим эти значения не восстанавливаются.
Поведение окон с оформлением в полноэкранном режиме не определено и зависит от платформы. Поэтому рекомендуется отключать оформление объекта Frame или Dialog с помощью метода setUndecorated.
При возврате из монопольного полноэкранного окна в оконный режим все изменения параметров отображения, внесённые вызовом setDisplayMode, автоматически отменяются.
- Параметры:
-
w— окно, которое будет использоваться в качестве полноэкранного;null— для возврата в оконный режим. На некоторых платформах полноэкранное окно должно быть компонентом верхнего уровня (то естьFrame), поэтому здесь предпочтительно использоватьFrame, а неWindow. - Начиная с:
- 1.4
- См. также:
getFullScreenWindow
public Window getFullScreenWindow()
Window, представляющий полноэкранное окно, если устройство находится в полноэкранном режиме.- Возвращает:
- полноэкранное окно или
null, если устройство не находится в полноэкранном режиме. - Начиная с:
- 1.4
- См. также:
isDisplayChangeSupported
public boolean isDisplayChangeSupported()
true, если этот GraphicsDevice поддерживает низкоуровневое изменение параметров отображения. На некоторых платформах низкоуровневое изменение параметров отображения разрешено только в монопольном полноэкранном режиме (то есть если isFullScreenSupported() возвращает true и приложение уже перешло в полноэкранный режим с помощью setFullScreenWindow(Window)).- Возвращает:
- поддерживается ли для этого графического устройства низкоуровневое изменение параметров отображения.
- Начиная с:
- 1.4
- См. также:
setDisplayMode
public void setDisplayMode(DisplayMode dm)
isDisplayChangeSupported() возвращает true; может потребоваться сначала перейти в монопольный полноэкранный режим с помощью setFullScreenWindow(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 - Начиная с:
- 1.4
- См. также:
getDisplayMode
public DisplayMode getDisplayMode()
GraphicsDevice. Если частота обновления не определена, возвращаемое значение может содержать частоту обновления DisplayMode.REFRESH_RATE_UNKNOWN. Аналогично, если глубина цвета не определена или поддерживается несколько значений глубины цвета, возвращаемое значение может содержать глубину цвета DisplayMode.BIT_DEPTH_MULTI.- Возвращает:
- текущий режим отображения этого графического устройства.
- Начиная с:
- 1.4
- См. также:
getDisplayModes
public DisplayMode[] getDisplayModes()
GraphicsDevice. Если частота обновления не определена, возвращаемые режимы отображения могут содержать частоту обновления DisplayMode.REFRESH_RATE_UNKNOWN. Аналогично, если глубина цвета не определена или поддерживается несколько значений глубины цвета, возвращаемые режимы отображения могут содержать глубину цвета DisplayMode.BIT_DEPTH_MULTI.- Возвращает:
- все режимы отображения, доступные для этого графического устройства.
- Начиная с:
- 1.4
getAvailableAcceleratedMemory
public int getAvailableAcceleratedMemory()
Обратите внимание, что возвращаемое значение представляет собой снимок объёма доступной памяти; при размещении некоторых изображений в этой памяти всё ещё могут возникнуть проблемы. Например, в зависимости от операционной системы, драйвера, конфигурации памяти и ситуации с потоками, для конкретного изображения может быть недоступен весь указанный объём. Объект
ImageCapabilities, связанный с VolatileImage, предоставляет дополнительные методы проверки, с помощью которых можно определить, было ли конкретное VolatileImage создано в ускоренной памяти.- Возвращает:
- количество байтов, доступных в ускоренной памяти. Отрицательное возвращаемое значение означает, что объём ускоренной памяти этого GraphicsDevice не определён.
- Начиная с:
- 1.4
- См. также:
isWindowTranslucencySupported
public boolean isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency translucencyKind)
- Параметры:
-
translucencyKind— тип поддерживаемой прозрачности - Возвращает:
- поддерживается ли заданный тип прозрачности
- Начиная с:
- 1.7
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/GraphicsDevice.html