1

UIDefaults を動的に変更して、Swing アプリケーションのカスタマイズに取り組んでいます。最終的な目標は、それらの多く (色、フォント、サイズ、境界線など) を変更し、ユーザーごとに結果を保存することです。アプリケーションに非標準の外観を与える場合がありますが、クライアントは要求し、クライアントは受け取る必要があります。

私が直面している唯一の問題は、GUI が一度だけ更新されることです。初めて UI プロパティを変更したときは、すべてがうまくいき、その後の変更は何にも影響しません。

// called from the EDT
// uiKeyName points to some ColorUIResource
UIManager.getDefaults().put(uiKeyName, <<color from color picker>>);
SwingUtilties.updateComponentTreeUI(rootWindow);

一度は機能しますが、二度と機能しません。アイデア?

4

1 に答える 1

2

新しい色を (たとえば) テーブルに入れるとき、それは Color オブジェクトですか、それとも ColorUIResource ですか? 私が理解しているように、新しい値は、現在の値がまたはUIResourcenullのインスタンスである場合にのみ使用されます。したがって、単純な古い Color オブジェクトを挿入すると、その後の変更はすべて無視されます。

また、リンクされたドキュメント ページが示唆するように、これはフォントと前景/背景色にのみ役立つ場合があります。境界線や余白などを変更する場合は、うまくいかない場合があります。これは、Swing の Pluggable LookAndFeels が設計された目的ではありません。クライアントに Synth ベースの LAF に興味を持ってもらうことはできますか?

于 2008-10-30T17:06:11.360 に答える