Класс 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 |
Переходит в полноэкранный режим или возвращается в оконный режим. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Приостанавливает текущий поток до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает текущий поток до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
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.