Получение разрешения экрана в Java: методы JFrame, Swing

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для определения разрешения экрана в Java обратитесь к классам Toolkit и Dimension:

Java
Скопировать код
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
System.out.printf("Разрешение экрана: %dx%d\n", screenSize.width, screenSize.height);

Этот код возвращает значения ширины и высоты экрана в пикселях.

Кинга Идем в IT: пошаговый план для смены профессии

Работа с несколькими мониторами

Если используются множественные мониторы, применяются классы GraphicsEnvironment и GraphicsDevice:

Java
Скопировать код
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] screens = ge.getScreenDevices();

for (GraphicsDevice screen : screens) {
    DisplayMode mode = screen.getDisplayMode();
    // Получаем разрешение каждого монитора
    System.out.printf("Разрешение монитора %s: %dx%d\n", screen.getIDstring(), mode.getWidth(), mode.getHeight());
}

Данный код предоставит информацию о разрешении каждого подключенного монитора.

Определение DPI экрана

Для установления плотности пикселей на дюйм (DPI) экрана, эффективной для корректной настройки размеров элементов интерфейса, используйте метод Toolkit.getScreenResolution():

Java
Скопировать код
int screenDPI = Toolkit.getDefaultToolkit().getScreenResolution();
System.out.println("DPI экрана: " + screenDPI);

Это значение влияет на корректность отображения элементов ваших приложений.

Визуализация

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

Java
Скопировать код
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();

А что касается размеров экрана:

Markdown
Скопировать код
Экран (🖥️): [Ширина ↔️, Высота ↕️]
Мерная лента (📏): ↔️ 1920 пикс., ↕️ 1080 пикс.

Решение потенциальных проблем

Использование класса GraphicsConfiguration

При помощи класса GraphicsConfiguration можно получить сведения о габаритах экрана:

Java
Скопировать код
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
GraphicsConfiguration config = gd.getDefaultConfiguration();
Rectangle bounds = config.getBounds();
System.out.println("Габариты экрана: " + bounds);

Этот метод помогает установить не только разрешение, но и положение экрана относительно виртуального рабочего стола.

Учёт масштабирования шрифтов в Windows

Настройка масштабирования шрифтов в операционной системе Windows может приводить к искажению размеров экрана. При этом рекомендуется использовать getBounds() и getDisplayMode() для корректного определения разрешения:

Java
Скопировать код
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = env.getScreenDevices();

for (GraphicsDevice device : devices) {
    GraphicsConfiguration[] configurations = device.getConfigurations();
    for (GraphicsConfiguration config : configurations) {
        Rectangle gcBounds = config.getBounds();
        System.out.printf("Реальное разрешение: %dx%d\n", gcBounds.width, gcBounds.height);
    }
}

Расчёт общего пространства на мониторах

Если необходимо получить общую картину доступного пространства на всех мониторах, следует использовать следующий код:

Java
Скопировать код
int totalWidth = Stream.of(devices)
    .mapToInt(device -> device.getDefaultConfiguration().getBounds().width)
    .sum();
int totalHeight = Stream.of(devices)
    .mapToInt(device -> device.getDefaultConfiguration().getBounds().height)
    .max()
    .orElseThrow(() -> new RuntimeException("Не найдено ни одного подключенного монитора!"));

System.out.printf("Общая доступная площадь: %dx%d\n", totalWidth, totalHeight);

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

Полезные материалы

  1. Toolkit.getScreenSize() JavaDoc — Официальная документация по методу Toolkit.getScreenSize() в Java.
  2. GraphicsDevice GraphicsConfiguration JavaDoc — Подробная информация о классе GraphicsDevice в Java и его методах.
  3. Как определить разрешение экрана в Java? на Stack Overflow — Полезное обсуждение вариантов определения разрешения экрана в Java.
  4. Изучение графических возможностей Java в JDK 21 — Глубокое погружение в графические возможности JDK 21 от Oracle.