- From: nekop@george24.com (nekop )
- To: java-house-brewers@java-house.etl.go.jp
- Message-ID: <200203071428.AA00058@hiyo.george24.com>
- Date: Thu, 7 Mar 2002 23:26:36 JST
- References: <200203061457.AA00057@hiyo.do-johodai.ac.jp>
[Prev][Next] |
[Threads][Index] |
[Search][Topics]
nekopです。自己フォローです。
nekop <nekop@george24.com> wrote:
>javax.swing.UIManager#getDefaults() で、デフォルトテーブルである
表記の問題ですが、staticメソッドなので javax.swing.UIManager.getDefaults() の
方が良いですね。
>javax.swing.UIDefaults オブジェクトを取得します。
>このクラスは java.util.HashTable クラスのサブクラスです。ここから
>java.util.HashTable#keySet() でキーセットを取り出し、キーの末尾が "font"で終
>わっているものの value に指定したいFontを設定します。
java.awt.Font ではなく javax.swing.plaf.FontUIResource を設定ですね。Fontを設
定しても*一応*動きますが。
また、FontUIResourceが格納されているキーには、"InternalFrame.titleFont"や
"MenuItem.acceleratorFont"なんてものもあるので、末尾が"Font"のものも、置き換え
の対象としたほうが良いと思います。
キーの末尾に頼るのではなく、if (エントリ instanceof FontUIResource) という判定
で置き換えたほうが良いかもしれません。
以下、フォントの変更部分だけstaticメソッドにしてみました。
public static void setFont(Font font) {
FontUIResource fontUIResource = new FontUIResource(font);
UIDefaults defaultTable = UIManager.getLookAndFeelDefaults();
Set set = defaultTable.keySet();
Iterator it = set.iterator();
while(it.hasNext()) {
Object o = it.next();
if (o instanceof String) {
String s = (String)o;
if (s.endsWith("font") ||
s.endsWith("Font")) {
UIManager.put(s, fontUIResource);
}
}
}
}
# String#endsWith(String) の存在をすっかり忘れてました。笑
Happy Swinging?
//nekop nekop@george24.com
[Prev][Next] |
[Threads][Index] |
[Search][Topics]
- Follow-ups:
-