2015-10-18 16:43:09 +0000 2015-10-18 16:43:09 +0000
81
81
Advertisement

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

Advertisement

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

Advertisement

Ответы (10)

77
77
77
2017-05-10 18:10:25 +0000

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

  1. Найдите java.exe вы установили.
  2. Щелкните правой кнопкой мыши -> Properties
  3. Перейдите на вкладку Compatibility
  4. Проверить Override high DPI scaling behavior.
  5. Выберите System для Scaling performed by:.
38
38
38
2015-12-01 18:31:58 +0000

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

-Dsun.java2d.dpiaware=false

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

[Правка 3] Просто используйте Java 9.

15
Advertisement
15
15
2017-04-02 09:11:49 +0000

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

Если вы можете добавить параметры в бинарный файл java, который запускает приложение, вы можете использовать опцию -D для передачи значения для sun.java2d.uiScale proprty, чтобы задать масштабный коэффициент для Java2D. Это позволит масштабировать ваше приложение. Значение масштабного коэффициента является двойным. Убедитесь, что вы передаете это значение самому двоичному 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

11
11
11
2017-08-01 00:05:58 +0000

Решение: Запусти его на JRE 9.

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

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

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

4
Advertisement
4
4
2017-12-13 12:08:20 +0000

Чтобы заставить все java исполняемые файлы иметь “свойства > совместимость > режим масштабирования dpi”, установите “System”, в 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
2
2
2017-01-08 17:29:02 +0000

Вам нужно установить PreferExternalManifest в regedit и создать пользовательские манифесты для java.exe и javaw.exe, как указано в следующем ответе Stackoverflow [ https://stackoverflow.com/a/39372897 ]0x3 &

0
Advertisement
0
0
2018-07-07 21:40:12 +0000

Попробуй Java 10.

я обнаружил, что -Dsun.java2d.dpiaware=false не работает на Java 9 или 10. Также для Java 8 и 9 мое качающееся приложение маленькое, но Java 10 размеров правильно работает в окнах!

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

я только что добавил JAVA_HOME=….\java_10 и PATH=%JAVA_HOME%\bin;%PATH% в файле летучей мыши.

java - jar xxx.jar

0
0
0
2018-02-04 04:21:52 +0000

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

Перейдите на C:\Program Файлы (x86)\Java\jre\bin и найдите javaw.exe. Щелкните правой кнопкой мыши по закладке “Свойства”, “Совместимость”, установите флажок “Переопределить высокое поведение масштабирования DPI” и выберите “System” (Обратите внимание, что “System enhanced” мне не помогло). Окна jar-файлов

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

-2
Advertisement
-2
-2
2018-11-30 15:06:18 +0000

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

C:\Program Files (x86)\Common Files\Oracle\Java\javapath
-4
-4
-4
2016-08-03 22:14:50 +0000

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

%SystemRoot%\system32\cmd.exe /C C:\your.file.path\yourJarFile.jar

Похожие вопросы

15
8
14
5
9
Advertisement