Toolkit.getDefaultToolkit (). GetScreenSize () не получает правильные значения разрешения экрана - PullRequest
0 голосов
/ 31 марта 2020

У меня проблема с использованием этого метода:

Toolkit.getDefaultToolkit().getScreenSize()

Я кодирую приложение в Java, используя Swing, который должен быть совместим с любым разрешением экрана, потому что это будет приложение для рабочего стола и мобильные устройства. Я читал о том, как получить разрешение экрана, и все ссылаются на этот метод. Я использовал его, и для моего рекомендованного разрешения экрана (1920x1080) он работает нормально, но я понял, что при изменении разрешения экрана моего монитора (я работаю на ноутбуке) иногда метод не получает правильное разрешение экрана указано (и да, я подтверждаю изменения, когда меняю разрешение экрана из конфигурации Windows).

Я читал о методе, но понял, что он бесполезен для того, что я пытаюсь do (я думаю):

Toolkit.getDefaultToolkit().getScreenResolution()

Мое любопытство привело меня к проверке полученных значений метода Toolkit.getDefaultToolkit().getScreenSize(), и я составил эту таблицу:

Screen configuration - IntelliJ value

Мой вопрос здесь, как это возможно? Это ошибка или есть что-то еще, чтобы всегда получить правильный размер экрана? Я не понимаю, почему я не всегда получаю правильные значения

1 Ответ

1 голос
/ 31 марта 2020

getScreenResolution () возвращает DPI экрана, лучше использовать GraphicsDevice.getDisplayModes ();

Затем можно получить высоту и ширину экрана из возвращенных объектов DisplayMode.

Также будьте осторожны, если у вас несколько мониторов, так как некоторые методы возвращают значения только для основного дисплея.

Этот код немного запутан, но может помочь.

for (DisplayMode mode : GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayModes())
{
  System.out.println(mode.getWidth() + " x " + mode.getHeight() + "(" + mode.getBitDepth() + ") : refresh rate " + mode.getRefreshRate());
}

Вы также можете получить текущий режим отображения на устройстве экрана по умолчанию с помощью

GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...