gpt4 book ai didi

java - 如何让 Java 日志记录使用修改后的 java.util.logging.Level 类

转载 作者:搜寻专家 更新时间:2023-11-01 02:29:54 24 4
gpt4 key购买 nike

在我的 Java 应用程序的首选项中,他们可以将调试级别设置为包含七个默认级别的 JComboBox。该列表包含 SEVERE、WARNING、INFO 等等,这是相当难看的,我宁愿用英语替换为“Severe,Warning”。

Java 日志记录使用的 java.util.logging.Level 具有可以采用不同资源包的构造函数,因此我想到了子类化级别,以便我可以将资源包更改为我自己的。

但是我如何让 java 日志记录使用修改后的级别

编辑

使用了下面 kans answer 中给出的示例类的修改版本

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())));

最佳答案

您不得更改“java”包内的类。它是 JDK 的一部分。显然它不是 GUI 的选项。了解更多如何使用 JComboBox 以不同方式呈现值。例如。你可以创建一个包装类:

class LevelItem
{
private final Level level;
public LevelItem(Level level) {this.level=level;}
public String toString()
{
if(Level.WARNING.equals(level) return "Warning";
if(Level.INFO.equals(level) return "Information";
...
}
}
}

并将其用于组合框值。或者也许可以制作自定义渲染器。这是如何创建自定义 rednerer 的示例:How to use Map element as text of a JComboBox

关于java - 如何让 Java 日志记录使用修改后的 java.util.logging.Level 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12071743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com