私のJavaアプリケーションの設定では、7つのデフォルトレベルを含むJComboBoxとして表示されるデバッグレベルを設定できます。リストにはSEVERE、WARNING、INFO eceteraが含まれていますが、これはかなり醜く、Idは英語の「Severe、Warning」に置き換えられます。
javaロギングで使用されるjava.util.logging.Levelには、異なるリソースバンドルを取得できるコンストラクターがあるため、リソースバンドルを自分のものに変更できるように、レベルをサブレーザー化することを考えました。
しかし、変更されたレベルを使用するためにJavaログを取得するにはどうすればよいですか?
編集
以下のkansの回答に示されているサンプルクラスの修正バージョンを使用しました
class LevelItem extends Object
{
public final Level level;
public LevelItem(Level level)
{
this.level = level;
}
public String toString()
{
return level.getLocalizedName().substring(0,1)+
level.getLocalizedName().substring(1).toLowerCase();
}
public boolean equals(Object obj)
{
return (obj instanceof LevelItem &&
(this.level.equals((((LevelItem) obj).level))));
}
}
ただし、equalsメソッドを追加する必要があるため、コンボボックスでsetSelectedItem()が機能します
すなわち
debugLevelCombo = new JComboBox();
debugLevelCombo.addItem(new LevelItem(Level.SEVERE));
debugLevelCombo.addItem(new LevelItem(Level.WARNING));
debugLevelCombo.addItem(new LevelItem(Level.INFO));
debugLevelCombo.addItem(new LevelItem(Level.CONFIG));
debugLevelCombo.addItem(new LevelItem(Level.FINE));
debugLevelCombo.addItem(new LevelItem(Level.FINER));
debugLevelCombo.addItem(new LevelItem(Level.FINEST));
debugLevelCombo.setSelectedItem(new
LevelItem(Level.parse(UserPreferences.getInstance().getDebugLevel())));