web-dev-qa-db-ja.com

Java dpi対応の無効化を無効にする

-Dsun.Java2d.dpiaware=false引数を指定してJavaアプリケーションを実行しようとしていますが、何も起こりません。

UIがぼやけるはずですが、通常のサイズのアイコンとフォントでは、このフラグは機能しないようです。

Windows 8.1でJDK 1.8.0_45を使用しています。

このバグを見つけました https://bugs.openjdk.Java.net/browse/JDK-808015 ですが、その回避方法がわかりません。

23
blow

Windows用に修正するには、次の手順を実行します。

  • Windows regedit新しいDWORDを作成する

    1. Windowsボタン+ Rを押し、「regedit」と入力して、[OK]をクリックします。
    2. 次のレジストリサブキーに移動します。
      HKEY_LOCAL_MACHINE>ソフトウェア> Microsoft> Windows> CurrentVersion> SideBySide
    3. 右クリックして、「新規」>「DWORD(32ビット)値」を選択します
    4. PreferExternalManifestと入力し、Enterキーを押します。
    5. PreferExternalManifestを右クリックし、[変更]をクリックします。
    6. 値データ1を入力し、10進数を選択します。
    7. OKをクリックします。
  • 2つの.manifestファイルを作成します([〜#〜] jdk [〜#〜]

    1. Java JDKインストールフォルダーに移動し、binディレクトリを開きます。
    2. Java.exe.manifestという名前の最初のファイルを作成します(この投稿の最後にコードを追加します)。
    3. Javaw.exe.manifestという名前の2つ目のコードを作成します(この投稿の最後にコードを追加します)。
  • 2つの.manifestファイルを作成します([〜#〜] jre [〜#〜]

    1. Java JREインストールフォルダに移動し、binディレクトリを開きます
    2. Java.exe.manifestという名前の最初のファイルを作成します(この投稿の最後にコードを追加します)。
    3. Javaw.exe.manifestという名前の2つ目のコードを作成します(この投稿の最後にコードを追加します)。
  • Javaアプリケーションを再起動します。

.manifestファイルに貼り付けるコード

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-Microsoft-com:asm.v3">

<dependency>
  <dependentAssembly>
    <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0" processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*">
    </assemblyIdentity>
  </dependentAssembly>
</dependency>

<dependency>
  <dependentAssembly>
    <assemblyIdentity
      type="win32"
      name="Microsoft.VC90.CRT"
      version="9.0.21022.8"
      processorArchitecture="AMD64"
      publicKeyToken="1fc8b3b9a1e18e3b">
    </assemblyIdentity>
  </dependentAssembly>
</dependency>

<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="asInvoker"
        uiAccess="false"/>
    </requestedPrivileges>
  </security>
</trustInfo>

<asmv3:application>
  <asmv3:windowsSettings xmlns="http://schemas.Microsoft.com/SMI/2005/WindowsSettings">
    <ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.Microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
  </asmv3:windowsSettings>
</asmv3:application>

</Assembly>

この修正は、Javaだけでなく、あらゆるプログラムに使用できます。

JNLPアプリケーションランチャーのDPIを修正する必要がある場合は、次のキーを.jnlpファイル内のリソースセクションに追加する必要があります。

<property name="Sun.Java2d.dpiaware" value="false"/>

Windowsをアップグレードした後(たとえば、win10からwin10 1607に)、機能しない場合は、この修正を再度適用する必要があります。

** Javaの更新後、.manifestファイルを新しいJavaのディレクトリにコピーして貼り付ける必要があります。

39
t0re199

-Dsun.Java2d.uiScale=1を使用してvmを実行してみて、swing/vtkアプリを無効にしました

0
sherpya