- PR -

SwingのBOLD文字見にくくないですか?

1
投票結果総投票数:53
BOLDは見にくい 52 98.11%
BOLDでよい 1 1.89%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-12-12 17:19
Swingを使うとデフォルトのラベル、ボタン、メニュー、他の多くのフォントがBOLD体になっているのですが、文字が凄く汚くて見にくいです。
英文はそれほどでもないように思いますが、日本語のメニューなどが酷いです。

みなさんどう思いますか?

ちなみに、以下のコードでデフォルトのフォントをBOLDでなくすることができます。
コード:

import java.awt.Font;
import java.util.Iterator;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;

public class SwingUtils {

private SwingUtils() {}

public static void nonBold() {
UIDefaults defaults = UIManager.getDefaults();

LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
Iterator iterator = lookAndFeel.getDefaults().keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next().toString();
if (key.indexOf("font") != -1) {
defaults.put(key, getPlaneFont(key));
}
}
}

private static Font getPlaneFont(String key) {
Font oldFont = UIManager.getFont(key);
return new FontUIResource(
oldFont.getName(),
oldFont.getStyle() & ~Font.BOLD,
oldFont.getSize());
}
}



# Font → FontUIResourceに変更

[ メッセージ編集済み 編集者: Wata 編集日時 2003-12-12 17:36 ]
begood
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 97
お住まい・勤務地: とうきょー
投稿日時: 2003-12-12 17:25
ほとんどの人がfontを変更しているような気が・・・
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2003-12-12 17:51
1.4 の Metal L&F ではデフォルトが Bold ですね。同じく見づらいと思います。
1.3 まではそうじゃなかったので、Metal で作ったツールがいくつもあるんですよ...。

Windows L&F も WindowsXP(luna)上でないとかっこわるい(私にとって)のであまり使いませんね。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2003-12-12 18:19
引用:

びしばしさんの書き込み (2003-12-12 17:51) より:
1.4 の Metal L&F ではデフォルトが Bold ですね。同じく見づらいと思います。
1.3 まではそうじゃなかったので、Metal で作ったツールがいくつもあるんですよ...。

Windows L&F も WindowsXP(luna)上でないとかっこわるい(私にとって)のであまり使いませんね。


あれ?1.3もじゃないですか?私のとこの、1.3.1_09は<html>で指定してないラベルとか
メニューとかはBOLDになりますよ。

それと、Metal以外のことはすっかり忘れてました。
でも、私もWindows L&FはWindowsになりきれていない部分が気になるので
あまり好きじゃないです。

ちなみに、上のコードよりも下の方がいいのかな?
ActiveObjectつかってます。
コード:
import java.awt.Font;
import java.util.*;

import javax.swing.*;
import javax.swing.plaf.FontUIResource;

public class SwingUtil {
   private SwingUtil() {}

   public static void nonBold() {
      UIDefaults defaults = UIManager.getDefaults();

      LookAndFeel lookAndFeel = UIManager.getLookAndFeel();
      Iterator iterator = lookAndFeel.getDefaults().entrySet().iterator();
      while (iterator.hasNext()) {
         Map.Entry entry = (Map.Entry)iterator.next();
         String key = entry.getKey().toString();
         if (key.indexOf("font") != -1) {
            defaults.put(key, getPlaneFont(lookAndFeel.getDefaults(), key));
         }
      }
   }

   private static Object getPlaneFont(final UIDefaults defaults, final String key) {
      return new UIDefaults.ActiveValue() {
         public Object createValue(UIDefaults table) {
            Font oldFont = defaults.getFont(key);
            return new FontUIResource(
               oldFont.getName(),
               oldFont.getStyle() & ~Font.BOLD,
               oldFont.getSize());
         }
      };
   }
}


lokto
会議室デビュー日: 2003/12/15
投稿数: 6
投稿日時: 2003-12-15 18:04
以下のページによればboldが汚いのはswingの問題ではないようです。
(このスレッドもリンクされてますね)
http://www.lake.its.hiroshima-cu.ac.jp/~mondo/Java/TnE/005.html

ちなみにMetalのデフォルトフォントを変えるだけでよければ、
-Dswing.plaf.metal.controlFont=Dialog-12
を起動時につけるという方法もあります。
1

スキルアップ/キャリアアップ(JOB@IT)