Класс 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()
- Возвращает:
- тип этого устройства, который может быть TYPE_RASTER_SCREEN, TYPE_PRINTER или TYPE_IMAGE_BUFFER.
- См. также:
getIDstring
public abstract String getIDstring()
Программа может использовать более одного устройства в своей работе. Этот метод возвращает строку, идентифицирующую конкретное устройство в локальной системе. Хотя нет публичного метода для установки этого идентификатора, программист может использовать его для отладки. Производители Java Runtime могут форматировать возвращаемое значение. Для того, чтобы интерпретировать значение идентификатора, обратитесь к производителю вашей Java Runtime. Чтобы узнать, кто производитель, из вашей программы, вызовите метод getProperty класса System со строкой "java.vendor".
- Возвращает:
- строку, являющуюся идентификатором данного устройства.
getConfigurations
public abstract GraphicsConfiguration[] getConfigurations()
- Возвращает:
- массив объектов конфигурации, связанных с этим устройством.
getDefaultConfiguration
public abstract GraphicsConfiguration getDefaultConfiguration()
- Возвращает:
- стандартную конфигурацию этого устройства.
getBestConfiguration
public GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
GraphicsConfigTemplate.- Параметры:
-
gct- объектGraphicsConfigTemplate, используемый для получения допустимой конфигурации - Возвращает:
- конфигурацию, удовлетворяющую критериям, определённым в заданном
GraphicsConfigTemplate. - См. также:
isFullScreenSupported
public boolean isFullScreenSupported()
true, если это устройство поддерживает эксклюзивный полноэкранный режим.- Возвращает:
- поддерживается ли эксклюзивный полноэкранный режим для этого графического устройства
- С:
- 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, если это устройство поддерживает низкоуровневые изменения отображения. На некоторых платформах низкоуровневые изменения отображения разрешены только в эксклюзивном полноэкранном режиме (то есть, если isFullScreenSupported() возвращает true и приложение уже вошло в полноэкранный режим с помощью setFullScreenWindow(java.awt.Window)).- Возвращает:
- поддерживаются ли низкоуровневые изменения отображения для этого графического устройства.
- С:
- 1.4
- См. также:
Установить режим отображения
public void setDisplayMode(DisplayMode dm)
isDisplayChangeSupported() возвращает true и может потребовать предварительного перехода в полноэкранный режим с использованием setFullScreenWindow(java.awt.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некорректен или отсутствует в массиве, возвращаемомgetDisplayModes -
UnsupportedOperationException- еслиisDisplayChangeSupportedвозвращаетfalse - С:
- 1.4
- См. также:
Получить режим отображения
public DisplayMode getDisplayMode()
GraphicsDevice. Возвращаемый режим отображения может иметь скорость обновления DisplayMode.REFRESH_RATE_UNKNOWN, если она неопределена. Аналогично, возвращаемый режим отображения может иметь глубину цвета DisplayMode.BIT_DEPTH_MULTI, если она неопределена или поддерживается несколько глубин цвета.- Возвращает:
- текущий режим отображения этого графического устройства.
- С:
- 1.4
- См. также:
Получить доступные режимы отображения
public DisplayMode[] getDisplayModes()
GraphicsDevice. Возвращаемые режимы отображения могут иметь скорость обновления DisplayMode.REFRESH_RATE_UNKNOWN, если она неопределена. Аналогично, возвращаемые режимы отображения могут иметь глубину цвета DisplayMode.BIT_DEPTH_MULTI, если она неопределена или поддерживается несколько глубин цвета.- Возвращает:
- все доступные режимы отображения для этого графического устройства.
- С:
- 1.4
Получить доступную ускоренную память
public int getAvailableAcceleratedMemory()
Обратите внимание, что возвращаемое значение является снимком доступной памяти; некоторые изображения могут по-прежнему испытывать проблемы с выделением этой памяти. Например, в зависимости от операционной системы, драйвера, конфигурации памяти и ситуации с потоками, полный объем, указанный в отчете, может быть недоступен для данного изображения. Существуют дополнительные методы запроса в объекте
ImageCapabilities, связанном с VolatileImage, которые можно использовать для определения того, было ли конкретное VolatileImage создано в ускоренной памяти.- Возвращает:
- количество байт, доступных в ускоренной памяти. Отрицательное возвращаемое значение указывает, что объем ускоренной памяти на этом графическом устройстве неопределен.
- С:
- 1.4
- См. также:
Поддерживается ли прозрачность окна
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/GraphicsDevice.html