4

アプリ内のすべての Swing コンポーネントを 1 つの係数でスケーリングする方法はありますか? 既存の Swing アプリがあり、すべてのコンポーネントを 2 倍のサイズで表示したいと考えています。これは可能ですか?

編集:

Java Swing アプリを Sugar (OLPC XO Graphics Environment) に移植しています。アクセシビリティ機能がありません。このマシンは、7.5 インチのディスプレイで 1200x900 の解像度を 1 つしか持っていません。そのため、コンポーネントは非常に小さく、判読できません。

4

4 に答える 4

7

置けば

System.setProperty("sun.java2d.uiScale","2")

メイン メソッドの最初の部分で、これによりアプリケーション全体が 2 倍にスケーリングされます。他のスケーリング ファクターも可能です。Windows 7 の openJDK 11 と KDE を使用する Linux でこれを正常に試した場合は、両方ともシステムのルック アンド フィールを使用します。Windows は分数の倍率を受け入れますが、KDE ​​は受け入れません。

ソース コードを変更したくない場合は、jvm へのコマンド ライン オプションを使用しても同じ効果があります。

java -Dsun.java2d.uiScale=2 -jar myApp.jar

于 2019-08-21T17:48:57.687 に答える
4

残念ながら、Swingにはそのような標準機能はありません。

アプリケーションのすべてのコンポーネントサイズは、そのコンポーネントが追加されるコンテナのレイアウトと、UIによって提供されるコンポーネントの優先/最小サイズによって決定されます。

したがって、(私が見ているように)最善の方法は、標準のUIを変更して、追加の優先サイズ(この場合は2倍)を提供することです。ただし、特定のタイプのコンポーネント(ボタン/チェックボックス/テーブル/ツリー/スクロールなど)ごとに個別に行う必要があります。さらに、システムUIを変更することはできません。クロスプラットフォームのルックアンドフィールをMetal LaFのように拡張することしかできず、ネイティブのルックアンドフィールを使用している場合はまったく役に立ちません。

ただし、フォントなど、いくつかのデフォルトのL&Fプロパティを変更できます。

UIManager.put ( "Button.font", new FontUIResource ( new Font ( "Arial", Font.BOLD, 20 ) ) );

この特定のケースでは、ボタンのフォントのみが変更されます。LookAndFeelクラス(BasicLookAndFeelなど)には、他にも多くのコンポーネントのフォントプロパティがあります。

于 2012-05-30T00:21:33.287 に答える
4
  • Nimbus Look and Feelを使用して Swing JComponents をスケーリングすることが可能

  • Nimbus L&F、そのColorInsetsBoundsei を変更するのは非常に複雑ですが、プレーンな形式では問題ありません

于 2012-05-30T04:38:22.980 に答える
1

これには J(X)Layer を使用できます (www.pbjar.org/blogs/jxlayer/ を参照してください。ただし、サイトは現在ダウンしているようです)。それに基づいた例がここにあります: http://patrickwebster.blogspot.com/2009/01/scalable-jfreechart-applet.html

于 2012-05-30T10:17:58.003 に答える