asm*_*smo 5 java logging jtextarea
需要:将Java应用程序的日志输出到GUI组件,例如JTextArea.
关注:需要以静态方式从任何类中记录事物.但是,GUI记录器组件不能是静态的(显然),因为它是父组件的成员.
我该怎么办?
创建一个单例日志提供程序并将“文本字段”添加为它的侦听器。
记录器 singleton 的示例:
interface Listener {
void log(String log);
}
enum Logger {
instance;
private List<Listener> listeners = new LinkedList<Listener>();
public void addListener(Listener l) {
synchronized(listeners) {
listeners.add(l);
}
}
public void log(String log) {
synchronized(listeners) {
for(Listener l : listeners)
l.log(log);
}
}
}
Run Code Online (Sandbox Code Playgroud)
添加您的侦听器(您需要自己实现),如下所示:
Logger.instance.addListener(myTextField);
Run Code Online (Sandbox Code Playgroud)
并像这样使用它(从任何类):
Logger.instance.log("Hello World!");
Run Code Online (Sandbox Code Playgroud)
或者您可以使用像log4j这样的包。