Как выполнить масштабирование приложений Java на дисплее с высоким разрешением?

Я пытаюсь запустить приложение Java (файл JAR) на дисплее с высоким разрешением в Windows 10. Приложение использует Swing и поэтому не поддерживает DPI. Обычно, когда я запускаю приложение, которое не поддерживает DPI, Windows масштабирует его для меня, хотя и размытым. Но по какой-то причине это не масштабирование приложения Java; я просто получаю крошечное маленькое окно в углу с невозможным для чтения текстом. Как запустить приложение Java с масштабированием Windows с высоким разрешением (размыто)?

18
задан millimoose
28.01.2023 13:55 Количество просмотров материала 3621
Распечатать страницу

10 ответов

проблема здесь, кажется, в том, что Swing по умолчанию утверждает, что он поддерживает DPI, поэтому windows не масштабирует его. Используйте этот параметр, чтобы отключить это поведение и windows начнет масштабирование приложения swing:

-Dsun.java2d.dpiaware=false

[EDIT: к сожалению, этот флаг больше не работает в Java 8, я тестировал его в Java 6. Похоже, что это известная проблема.]

[EDIT 2: Вы можете изменить установку Java 8 для правильной работы, используя программу для изменения EXE-файла проявляется. Я изменил настройку с true на false в манифестах внутри java.exe и javaw.exe, и теперь мои программы Swing масштабируются правильно в Windows 10 с высоким разрешением. Я использовал Ресурс Тюнер для этого.]

[Edit 3] Просто используйте Java 9

31
отвечен CarlG 2023-01-29 21:43

только что нашел простое решение на моей машине Windows 10:

  1. найти java.exe установлен.
  2. щелкните правой кнопкой мыши -> Properties
  3. на Compatibility tab
  4. Регистрация Override high DPI scaling behavior.
  5. выбрать System на Scaling performed by:
49
отвечен Elderry 2023-01-30 00:00

решение: запустите его на JRE 9.

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

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

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

9
отвечен Sergio Muriel 2023-01-30 02:17

если вы наткнулись на этот вопрос, но на самом деле ищу решение, которое работает на Linux, это для вас.

если вы можете добавить параметры в java двоичный файл, который запускает приложение, вы можете использовать опцию -D передать значение sun.java2d.uiScale proprty для указания коэффициента масштабирования для Java2D. Это приведет к масштабированию приложения. Значение коэффициента масштабирования-double. Убедитесь, что вы передаете этот параметр java сам двоичный файл, а не запущенная Java приложение.

Пример: Запуск NearInfinity.jar с коэффициентом масштабирования пользовательского интерфейса 2.5

java -Dsun.java2d.uiScale=2.5 -jar ~/jars/NearInfinity.jar

я нашел эту статью весьма полезной в целом для запуска Linux на системах HiDPI, и некоторые вещи могут работать и на Windows:https://wiki.archlinux.org/index.php/HiDPI

8
отвечен Christian Hujer 2023-01-30 04:34

необходимо установить PreferExternalManifest в regedit и создать пользовательские манифесты для java.exe и javaw.exe, как указано в следующем ответе stackoverflow https://stackoverflow.com/a/39372897

2
отвечен droidlabel 2023-01-30 06:51

чтобы заставить все исполняемые файлы java иметь "свойства > совместимость > режим масштабирования dpi "значение " система", в powershell администратора (win-x, a), выполните:

$javaexes = (Get-ChildItem -path "$env:ProgramFiles\Java","${env:ProgramFiles(x86)}\java" -filter java?.exe -recurse  | Where-Object {$_.Name -match "java(|w).exe"} ).fullname

$javaexes | foreach {REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"  /V $_ /T REG_SZ /D "~ DPIUNAWARE" /F}

чтобы отменить:

$javaexes | foreach {REG delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"  /V $_ /f}

вместо HKCU вы могли бы использовать HKLM, но тогда вы не можете изменить параметр масштабирования dpi вручную больше в диалоговом окне Свойства > совместимость java*.файл EXE.

2
отвечен masterxilo 2023-01-30 09:08

Спасибо за Кеннета. Я нахожу C:\Program Files (x86)\Java\jre\bin\java.exe затем right click -> properties -> compatibility tab -> "override high DPI scaling behavior" и выберите System, то он работает.Я также попытался таким же образом изменить javaw.exe совместимость, он также работает.

PS: я запускаю burpsuite.jar на win10 1703 с помощью этого метода.

1
отвечен xile 2023-01-30 11:25

решение Elderry хорошо, но что, если вы хотите запустить файл jar в Windows, и у него нет параметров совместимости?

перейти C:\Program Files (x86)\Java\jre\bin и найдите javaw.исполняемый. Щелкните правой кнопкой мыши, свойства, вкладка совместимость, проверьте "переопределить поведение масштабирования с высоким разрешением" и выберите " Система "(обратите внимание, что" system enhanced " не работает для меня).

теперь jar-файл Windows должна корректно с читаемым текстом. Если нет, это может означать, что Windows не связывает jar введите файлы в javaw.Ева, как следует. Третье исправление лица доступно на: https://johann.loefflmann.net/en/software/jarfix/index.html

0
отвечен Kenneth 2023-01-30 13:42

Попробуйте Java 10.

Я нашел это-Dsun.java2d.dpiaware=false не работает в Java 9 или 10. Также для Java 8 и 9 мое приложение swing мало, но Java 10 размеров правильно в windows!

Так для приложения, которое вы можете запустить из файла bat, как: java-jar xxx.jar

Я только что добавил JAVA_HOME=....\java_10 и Path=%переменной JAVA_HOME%\bin в;%путь% в bat-файл.

java-jar xxx.jar

0
отвечен Stan Towianski 2023-01-30 15:59

я смог получить разумный dpi при запуске с помощью командной строки, например:

%SystemRoot%\system32\cmd.exe /C C:\your.file.path\yourJarFile.jar
-3
отвечен user3301455 2023-01-30 18:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх