1. ホーム
  2. java

Windows/LinuxでJava SwingアプリのDPIを設定するには?

2023-12-05 13:36:42

質問

DPI が 150 以上のモニタ (Macbook Pro など) を使用している場合にも、問題が発生する可能性があります。 Java Swing アプリのフォントが高 DPI のモニターでは小さすぎる。 と表示され、フォントサイズを変更することができません(WindowsのDPIを直接無視して を表示するだけです。 ). 画面の解像度を変更する以外には何もできませんが、これは絶対に LCD ですべてをぼやけさせる可能性があります。

はい、私は高 DPI モニター、15.6' で解像度 1920x1080 のラップトップを持っていますが、Matlab や Burpsuite など、いくつかの Java デスクトップ アプリは私のラップトップ上で非常に小さく見えます。インターネットを何度も何度も検索しましたが、この問題に対する解決策が見つかりません。JREのフォントを変更できることは知っています。 JRE_HOME/lib/font/fontconfig.properties.src を通して JRE フォントを変更できることは知っていますが、Java デスクトップ フォントのデフォルトのフォント サイズまたは DPI を設定する場所を見つけることができません。

この問題には解決策がないのでしょうか。高 DPI のモニターをお持ちですか? そのようなアプリではどうするのですか? Swing は高 DPI ユーザーをあきらめているのですか?

どのように解決するのですか?

私は現在、Windows でこの問題を調査しています。以下は、私が見つけたものです。

ほとんどの Swing Look & Feel は高 DPI をまったくサポートしておらず、スケーラブルであるはずの Nimbus もサポートしていません。Nimbus が最終的に高 DPI スケーリングを提供するかもしれないという、いくつかの古いブログ記事を見つけましたが、どうやらそれは実現しなかったようです。

1 つの例外は System LAF ですが、そのデフォルトのフォントは、すべての DPI 設定で、実際のシステムのフォント サイズよりも 10 % ほど小さくなっています。さらに、ここで説明されているように、システムを明示的に選択する必要があります。 http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

Swingで設定できる単一のスケーリングファクターもありません。特定の LAF は、スケーリングを処理するコードを提供しなければなりません。ですから、あなたができる最善のことは、Systemを選択し、それが十分であることを望むことです。

しかし、JavaFX は私のシステムで 150% まで正しく自動的にスケーリングします。可能であれば、GUI を構築するために JavaFX を使用することをお勧めします。

編集: いくつかの小さなテスト プログラムを作成し、さまざまな GUI フレームワーク、Swing テーマ、および DPI 設定の比較スクリーンショットを撮りました。これは、この質問を読んでいる人々にとって有益かもしれません。 http://kynosarges.org/GuiDpiScaling.html