如何在程序运行时创建显示System.out / err的Swing控制台窗口?
我有一个使用很多System.out状态更新的应用程序,我想从Eclipse迁移到一个独立的.jar。我一直在尝试创建一个“控制台窗口”,它将显示System.out和System.err。我使用this链接作为跳转点,虽然它与程序启动的GUI应用程序一起正常工作,但只要我启动运行应用程序内容的线程,控制台窗口就会停止更新。我测试了将system.out重定向到一个文件并且工作正常,所以我很困惑我可能做错了什么。基本上,我有几个主要的阶段。
答案 0 :(得分:3)
我认为您可能正在尝试从事件调度线程以外的线程更新文本区域,这通常会导致GUI无法更新/挂起/发生其他不良事件。
您要做的是通过拨打SwingUtilities.invokeLater
(link)来更新您的显示器。像这样:
SwingUtilities.invokeLater(new Runnable(){
public void run(){
myTextArea.append( "Some string" );
}
});
您考虑使用真正的日志记录系统而不是使用System.out
和System.err
吗?应用程序通常不会使用System.out
来记录消息,因为它是一种全有或全无的方法。使用任何中途正确的日志记录库,您可以设置级别并微调您从哪里接收消息。我个人喜欢Logback + SLF4J,但Java中内置的日志记录系统对于一个简单的库来说已经足够了。
答案 1 :(得分:2)
您可以尝试使用Message Console。
当我使用消息控制台时,我使用了PipedStreams并发现它们难以使用,所以我采用了不同的方法。
答案 2 :(得分:1)