Spec-Zone.ru › OpenJDK 17

Класс GraphicsDevice

java.lang.Object
java.awt.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 режима эксклюзивного полноэкранного режима.

См. также:
  • GraphicsEnvironment
  • GraphicsConfiguration

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static enum  GraphicsDevice.WindowTranslucency
Виды непрозрачности, поддерживаемые базовой системой.

Краткое описание полей

Модификатор и тип Поле Описание
static final int TYPE_IMAGE_BUFFER
Устройство является буфером изображения.
static final int TYPE_PRINTER
Устройство является принтером.
static final int TYPE_RASTER_SCREEN
Устройство является растровым экраном.

Краткое описание конструкторов

GraphicsDevice()
Модификатор Конструктор Описание
protected
Это абстрактный класс, который нельзя создать напрямую.

Краткое описание методов

Модификатор и тип Метод Описание
int getAvailableAcceleratedMemory()
Этот метод возвращает количество байтов, доступных в ускоренной памяти на этом устройстве.
GraphicsConfiguration getBestConfiguration(GraphicsConfigTemplate gct)
Возвращает "лучшую" возможную конфигурацию, которая удовлетворяет критериям, определенным в 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(GraphicsDevice.WindowTranslucency translucencyKind)
Возвращает, поддерживается ли данным уровнем непрозрачности это графическое устройство.
void setDisplayMode(DisplayMode dm)
Устанавливает режим отображения этого графического устройства.
void setFullScreenWindow(Window w)
Переход в полноэкранный режим или возврат в оконный режим.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

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()
Это абстрактный класс, который нельзя создать напрямую. Экземпляры необходимо получить из соответствующего фабричного метода или метода запроса.
См. также:
  • GraphicsEnvironment.getScreenDevices()
  • GraphicsEnvironment.getDefaultScreenDevice()
  • GraphicsConfiguration.getDevice()

Подробное описание методов

getType

public abstract int getType()
Возвращает тип данного GraphicsDevice.
Возвращает:
тип этого GraphicsDevice, который может быть TYPE_RASTER_SCREEN, TYPE_PRINTER или TYPE_IMAGE_BUFFER.
См. также:
  • 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.
См. также:
  • GraphicsConfigTemplate

isFullScreenSupported

public boolean isFullScreenSupported()
Возвращает true , если данное GraphicsDevice поддерживает полноэкранный эксклюзивный режим. Если установлен SecurityManager, его метод checkPermission будет вызван с AWTPermission("fullScreenExclusive"). isFullScreenSupported возвращает true только в том случае, если это разрешение предоставлено.
Возвращает:
поддерживается ли полноэкранный эксклюзивный режим для данного графического устройства
С:
1.4
См. также:
  • AWTPermission

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
См. также:
  • isFullScreenSupported()
  • getFullScreenWindow()
  • setDisplayMode(java.awt.DisplayMode)
  • Component.enableInputMethods(boolean)
  • Component.setVisible(boolean)
  • Frame.setUndecorated(boolean)
  • Dialog.setUndecorated(boolean)

getFullScreenWindow

public Window getFullScreenWindow()
Возвращает объект Window , представляющий полноэкранное окно, если устройство находится в полноэкранном режиме.
Возвращает:
полноэкранное окно или null , если устройство не находится в полноэкранном режиме.
С:
1.4
См. также:
  • setFullScreenWindow(Window)

isDisplayChangeSupported

public boolean isDisplayChangeSupported()
Возвращает true , если данное GraphicsDevice поддерживает низкоуровневые изменения отображения. На некоторых платформах низкоуровневые изменения отображения разрешены только в эксклюзивном полноэкранном режиме (т.е., если isFullScreenSupported() возвращает true и приложение уже перешло в полноэкранный режим с помощью setFullScreenWindow(java.awt.Window)).
Возвращает:
поддерживаются ли низкоуровневые изменения отображения для этого графического устройства.
С:
1.4
См. также:
  • isFullScreenSupported()
  • setDisplayMode(java.awt.DisplayMode)
  • setFullScreenWindow(java.awt.Window)

Установить режим отображения

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 null, или не доступен в массиве, возвращаемом getDisplayModes
UnsupportedOperationException - если isDisplayChangeSupported возвращает false
С:
1.4
См. также:
  • getDisplayMode()
  • getDisplayModes()
  • isDisplayChangeSupported()

Получить режим отображения

public DisplayMode getDisplayMode()
Возвращает текущий режим отображения этого GraphicsDevice. Возвращаемый режим отображения может иметь скорость обновления DisplayMode.REFRESH_RATE_UNKNOWN, если она неопределена. Аналогично, возвращаемый режим отображения может иметь глубину цвета DisplayMode.BIT_DEPTH_MULTI, если она неопределена или поддерживается несколько глубин цвета.
Возвращает:
текущий режим отображения этого графического устройства.
С:
1.4
См. также:
  • setDisplayMode(DisplayMode)

Получить доступные режимы отображения

public DisplayMode[] getDisplayModes()
Возвращает все доступные режимы отображения для этого GraphicsDevice. Возвращаемые режимы отображения могут иметь скорость обновления DisplayMode.REFRESH_RATE_UNKNOWN, если она неопределена. Аналогично, возвращаемые режимы отображения могут иметь глубину цвета DisplayMode.BIT_DEPTH_MULTI, если она неопределена или поддерживается несколько глубин цвета.
Возвращает:
все доступные режимы отображения для этого графического устройства.
С:
1.4

Получить доступную ускоренную память

public int getAvailableAcceleratedMemory()
Этот метод возвращает количество байтов, доступных в ускоренной памяти на этом устройстве. Некоторые изображения создаются или кэшируются в ускоренной памяти по принципу «первым пришёл — первым обслужен». На некоторых операционных системах эта память является ограниченным ресурсом. Вызов этого метода и планирование создания и очистки изображений с умом позволит приложениям максимально эффективно использовать этот ограниченный ресурс.
Обратите внимание, что возвращаемое число является моментальным снимком доступной памяти; некоторые изображения всё ещё могут иметь проблемы с выделением в этой памяти. Например, в зависимости от операционной системы, драйвера, конфигурации памяти и ситуации с потоками, весь объём, указанный в отчёте, может быть недоступен для конкретного изображения. Есть дополнительные методы запроса в объекте ImageCapabilities, связанном с VolatileImage, которые могут использоваться для определения того, было ли конкретное VolatileImage создано в ускоренной памяти.
Возвращает:
количество байтов, доступных в ускоренной памяти. Отрицательное значение возврата указывает, что объём ускоренной памяти на этом графическом устройстве неопределён.
С:
1.4
См. также:
  • Image.flush()
  • ImageCapabilities.isAccelerated()

Поддерживается ли полупрозрачность окна

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API