Я перевожу Java-приложение из Java 8 (Oracle) в Java 11 (AdaptOpenJDK). Версия, которая использовала Java 8, имела проблемы с макетом в Windows 10 с дисплеями с высоким разрешением. После того, как я собрал java 11, проблема исчезла, и GUI выглядит хорошо в Windows 10. Однако я обнаружил, что новая сборка с java 11 не выглядит хорошо в Windows 7, изображения и текст GUI выглядят точечно.
Резюме:
- Графический интерфейс с java 8 подходит для Win 7, но не выглядит нормально в Win 10
- Графический интерфейс с java 11 подходит для Win 10, но не выглядит нормальноWin 7
Я использую монитор 4k с разрешением 3840x2160 с масштабированием 125%.
Я обнаружил, что если я использую java 8 JRE (из AdoptOpenJDK) для запуска приложения,тогда проблема в Windows 7 исчезнет. Кажется, проблема вызвана тем, что java 11 выполняет масштабирование на 125%, поскольку я обнаружил, что графический интерфейс пользователя примерно на 25% больше.
Я хотел бы найти решение в Windows 7 при использовании java 11. Интересно,есть любой аргумент javaw, который я могу использовать, или любой системный параметр, который я могу изменить.
Любая помощь приветствуется.
Спасибо.
Обновление
Скриншоты всех комбинаций в java-версии и окнах прилагаются.
- java8 win 7.jpg : выглядит нормально (без масштабирования),маленький недостаток только текста и изображений независимо от конфигурации масштабирования в системе
- java8 win 10.png : масштабирование не применяется к значкам - загромождено JTree
- java11 win 10.png : выглядит нормально - правильное масштабирование
- java11 win 7.jpg : применено масштабированиено это показывает проблемы - значки и текст выглядят пиксельными
Решение
Это не актуальноЭто всего лишь решение, но я хочу поделиться тем, что, по моему мнению, происходит после некоторых исследований.
Эта статья Microsoft описывает режимы осведомленности о DPI и какие из них есть в каждой версии Windows. Поведение для всех версий Windows, предшествующих 8.1, всегда применяет растягивание растрового изображения, что приводит к размытым пользовательским интерфейсам. Растяжение не происходит в Java 8, потому что оно не поддерживает dpi, но оно имеет более серьезную проблему с высоким процентом масштабирования (загромождение, огромный текст и маленькие изображения / значки). Растяжение происходит в Java 11, так как он поддерживает dpi, однако имеет проблему с размытостью из-за поведения растяжения, реализованного в Windows 7.