Могу ли я установить разрешение DPI моего приложения Java Swing без изменения настроек DPI системы? - PullRequest
9 голосов
/ 09 июля 2009

У меня есть приложение Java, использующее Substance LookAndFeel с Windows в качестве целевой платформы, и я хочу увеличить настройку DPI моего приложения без изменения системной настройки.

Я хочу сделать это, потому что я не хочу заставлять пользователя перезагружать Windows, и потому что многие приложения Windows, похоже, имеют проблемы с очень высокими настройками DPI (> 120)

PS: я знаю, что Substance LaF позволяет масштабировать размер шрифта во время выполнения, но таким образом масштабируется только высота моих элементов управления, а не ширина. Я хочу, чтобы мой графический интерфейс полностью масштабировался, как это было бы, если бы я установил настройку DPI системы.

Ответы [ 3 ]

5 голосов
/ 12 ноября 2009

Не знаю, возможно ли это. Внешний вид должен поддерживать его, и, насколько я знаю, Windows Look & Feel этого не делает. Вот хак, который вы можете рассмотреть: переберите все шрифты, определенные в вашем внешнем виде, и переопределите их, чтобы они были чуть больше. Вот фрагмент кода, который делает это:

for (Iterator i = UIManager.getLookAndFeelDefaults().keySet().iterator(); i.hasNext();) {
    String key = (String) i.next();
    if(key.endsWith(".font")) {
        Font font = UIManager.getFont(key);
        Font biggerFont = font.deriveFont(2.0f*font.getSize2D());
        // change ui default to bigger font
        UIManager.put(key,biggerFont);
    }
}

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

1 голос
/ 01 августа 2017

Да, вы можете, но вам нужно запустить его на JRE 9 .

Это связано с тем, что среда выполнения Java объявила о себе, что она поддерживает DPI, но на самом деле не поддерживала ее для AWT и Swing. Java-приложения были измерены и отображены на основе пикселей, а не должным образом масштабированы, включая дисплеи HiDPI. В любом случае, это было недавно решено. См. Вопрос JEP 263: графика HiDPI в Windows и Linux и обновление .

Итак, увеличение размера шрифта не работает (потому что это не увеличивает остальные вещи); аргумент jvm -Dsun.java2d.dpiaware=false не работает (потому что он на самом деле не поддерживается); и файл манифеста + редактирование реестра (для Windows) просто не работает.

Решение: вам нужно запустить его на JRE 9, потому что он действительно поддерживает эту функцию.

1 голос
/ 05 марта 2010

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

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