Класс 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 в локальной GraphicsEnvironment. Хотя нет публичного метода для установки этого String, программист может использовать его для отладки. Поставщики Java Runtime Environment могут форматировать возвращаемое значение String. Чтобы определить, как интерпретировать значение String, обратитесь к поставщику вашей Java Runtime. Чтобы узнать, кто является поставщиком, из вашей программы, вызовите метод getProperty класса System со строкой "java.vendor".
- Возвращает:
- строку, являющуюся идентификатором этого
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 только в том случае, если это разрешение предоставлено.- Возвращает:
- поддерживается ли полноэкранный эксклюзивный режим для этого графического устройства
- Since:
- 1.4
- См. также:
setFullScreenWindow
public void setFullScreenWindow(Window w)
isFullScreenSupported возвращает true. Эксклюзивный режим подразумевает:
- Окна не могут перекрывать полноэкранное окно. Все остальные окна приложения всегда будут отображаться под полноэкранным окном в порядке наложения.
- В любой момент времени на устройстве может быть только одно полноэкранное окно, поэтому вызов этого метода, когда существует существующее полноэкранное окно, приведет к возврату существующего полноэкранного окна в оконный режим.
- Окна ввода-вывода отключены. Рекомендуется вызвать
Component.enableInputMethods(false)для обозначения компонента как не-клиентской части фреймворка ввода-вывода.
Имитируемый полноэкранный режим размещает и переопределяет размер окна в максимально возможной видимой области экрана. Однако системная среда может изменять запрошенные данные, связанные с геометрией, таким образом, что объект Window размещается и масштабируется таким образом, что соответствует настройкам рабочего стола.
При входе в полноэкранный режим, если окно, которое будет использоваться как полноэкранное, не отображается, этот метод отобразит его. Оно останется видимым при возвращении в оконный режим.
При входе в полноэкранный режим все эффекты полупрозрачности для окна сбрасываются. Его форма устанавливается в null, значение непрозрачности устанавливается в 1.0f, а альфа-значение цвета фона устанавливается в 255 (полная непрозрачность). Эти значения не восстанавливаются при возвращении в оконный режим.
Не определено и зависит от платформы, как работают окна с украшениями в полноэкранном режиме. По этой причине рекомендуется отключать украшения в объекте Frame или Dialog с помощью метода setUndecorated.
При возврате из эксклюзивного полноэкранного режима в оконный режим любые изменения отображения, сделанные при вызове setDisplayMode , автоматически восстанавливаются в исходное состояние.
- Параметры:
-
w- окно для использования в качестве полноэкранного окна;nullпри возврате в оконный режим. Некоторые платформы ожидают, что полноэкранное окно будет компонентом верхнего уровня (т.е.,Frame); поэтому предпочтительнее использоватьFrameвместоWindow. - Since:
- 1.4
- См. также:
getFullScreenWindow
public Window getFullScreenWindow()
Window , представляющий полноэкранное окно, если устройство находится в полноэкранном режиме.- Возвращает:
- полноэкранное окно или
null, если устройство не находится в полноэкранном режиме. - Since:
- 1.4
- См. также:
isDisplayChangeSupported
public boolean isDisplayChangeSupported()
true , если это GraphicsDevice поддерживает изменения отображения на низком уровне. На некоторых платформах изменения отображения на низком уровне разрешены только в эксклюзивном полноэкранном режиме (т.е., если isFullScreenSupported() возвращает true и приложение уже перешло в полноэкранный режим с помощью setFullScreenWindow(java.awt.Window)).- Возвращает:
- поддерживаются ли изменения отображения на низком уровне для этого графического устройства.
- Since:
- 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, 2023, 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/21/docs/api/java.desktop/java/awt/GraphicsDevice.html