Класс 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, программист может использовать этот метод для отладки. Поставщики Java Runtime Environment могут форматировать возвращаемое значение метода String. Чтобы определить, как интерпретировать значение String, обратитесь к поставщику вашей Java Runtime. Чтобы узнать, кто является поставщиком, в вашей программе вызовите метод 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 поддерживает полноэкранный эксклюзивный режим. Если установлен SecurityManager, его метод checkPermission будет вызван с AWTPermission("fullScreenExclusive"). 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 , если данное GraphicsDevice поддерживает низкоуровневые изменения отображения. На некоторых платформах низкоуровневые изменения отображения разрешены только в эксклюзивном полноэкранном режиме (т.е., если 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- если предоставленныйDisplayModenull, или не доступен в массиве, возвращаемом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, 2021, 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/17/docs/api/java.desktop/java/awt/GraphicsDevice.html