提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、接管System.out流的原因
使用Eclipse运行swing程序时, 可以在控制台看到输出,但打包成独立jar包时,无法看到,这时就需要将System.out.println()方法的输出至swing组件(JTextArea、JTextField)
二、代码实现
public class MPrintStream extends PrintStream {
private JTextArea jTextArea;
public MPrintStream(OutputStream out, JTextArea jTextArea) {
super(out);
this.jTextArea = jTextArea;
}
/**
* 在这里重截,所有的打印方法都要调用的方法
*/
public void write(byte[] buf, int off, int len) {
final String message = new String(buf, off, len);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextArea.append(message+"\r");
}
});
}
}
//在主法中调用
static{
MPrintStream mPrintStream = new MPrintStream(System.out, textArea);
System.setOut(mPrintStream);
}
总结
不断分享swing相关知识,欢迎交流QQ493241246