知识大全 Java标准输出重定向到GUI

Posted 标准

篇首语:丈夫欲遂平生志,一载寒窗一举汤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java标准输出重定向到GUI相关的知识,希望对你有一定的参考价值。

Java标准输出重定向到GUI  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  实现输出从控制台到GUI并不复杂 只需要将标准输出重定向

  重定向标准输出很easy System 类里有两个静态方法setErr(PrintStream err) 和 setOut(PrintStream out) 分别用于重定位 标准 错误输出流和 标准 输出流 只需要在程序初始时设置即可

  // GUIPrintStream guiPrintStream = new GUIPrintStream(System out jTextArea);

  System setErr(guiPrintStream);

  System setOut(guiPrintStream);

  在上面的代码中 我们发现一个新的类 GUIPrintStream 这是我们为 PrintStream 所做的包装 因为我们的输出目标位置是GUI 所以需要在 PrintStream 上做些文章 大家请看下面 GUIPrintStream 的代码

  Java代码

  /**//*

  * To change this template choose Tools | Templates

  * and open the template in the editor

  */

  import java io OutputStream;

  import java io PrintStream;

  import javax swing SwingUtilities;

  import javax swing text JTextComponent;

  /** *//**

  * 输出到文本组件的流

  *

  * @author Chen Wei

  * @website chenwei mobi

  * @email chenw

  */

  public class GUIPrintStream extends PrintStream

  private JTextComponent ponent;

  private StringBuffer sb = new StringBuffer();

  public GUIPrintStream(OutputStream out JTextComponent ponent)

  super(out);

  ponent = ponent;

  

  /** *//**

  * 重写write()方法 将输出信息填充到GUI组件

  * @param buf

  * @param off

  * @param len

  */

  @Override

  public void write(byte[] buf int off int len)

  final String message = new String(buf off len);

  SwingUtilities invokeLater(new Runnable()

  public void run()

  sb append(message);

  ponent setText(sb toString());

  

  );

  

  

  /**//*

  * To change this template choose Tools | Templates

  * and open the template in the editor

  */

  import java io OutputStream;

  import java io PrintStream;

  import javax swing SwingUtilities;

  import javax swing text JTextComponent;

  /** *//**

  * 输出到文本组件的流

  *

  * @author Chen Wei

  * @website chenwei mobi

  * @email chenw

  */

  public class GUIPrintStream extends PrintStream

  private JTextComponent ponent;

  private StringBuffer sb = new StringBuffer();

  public GUIPrintStream(OutputStream out JTextComponent ponent)

  super(out);

  ponent = ponent;

  

  /** *//**

  * 重写write()方法 将输出信息填充到GUI组件

  * @param buf

  * @param off

  * @param len

  */

  @Override

  public void write(byte[] buf int off int len)

  final String message = new String(buf off len);

  SwingUtilities invokeLater(new Runnable()

  public void run()

  sb append(message);

  ponent setText(sb toString());

  

  );

  

  

  类 GUIPrintStream 继承自 PrintStream 并且对它进行了一些修改

  GUIPrintStream 在构造函数中增加了一个 JTextComponent 变量 它就是我们的目标输出 GUI 组件 它规定了目标输出组件是一个文本组件 接下来覆写了 write(byte[] buf int off int len)方法 这个方法原来的作用是将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流 现在经过我们的修改 变成了将 byte 数组包装成 String 写入目标 GUI 组件

  简单的代码完成了将标准输出重定向到 GUI 的全过程 由此延伸 还可以将标准输出重定向到文本文件 从GUI获取标准输入等 就不一一介绍

  测试

  Java代码

  public class MainFrame extends javax swing JFrame

  public MainFrame()

  initComponents();

  // 重定向到通过文本组件构建的组件输出流中

  System setOut(new GUIPrintStream(System out textArea));

  

  private void initComponents()

  scrollPane = new javax swing JScrollPane();

  textArea = new javax swing JTextArea();

  btnOut = new javax swing JButton();

  setDefaultCloseOperation(javax swing WindowConstants EXIT_ON_CLOSE);

  setTitle( 标准输出重定向到GUI chenwei mobi );

  textArea setColumns( );

  textArea setRows( );

  scrollPane setViewportView(textArea);

  getContentPane() add(scrollPane java awt BorderLayout CENTER);

  btnOut setText( System out println(System getProperties()); );

  btnOut addActionListener(new java awt event ActionListener()

  public void actionPerformed(java awt event ActionEvent evt)

  btnOutActionPerformed(evt);

  

  );

  getContentPane() add(btnOut java awt BorderLayout PAGE_END);

  pack();

  

  private void btnOutActionPerformed(java awt event ActionEvent evt)

  System out println(System getProperties());

  

  /**

  * @param args the mand line arguments

  */

  public static void main(String args[])

  java awt EventQueue invokeLater(new Runnable()

  public void run()

  new MainFrame() setVisible(true);

  

  );

  

  private javax swing JButton btnOut;

  private javax swing JScrollPane scrollPane;

  private javax swing JTextArea textArea;

cha138/Article/program/Java/hx/201311/25870

相关参考

知识大全 eclipse控制台输出重定向到文件

   Run>RunConfigurations>Common>File      &nbs

知识大全 在对标准流进行重定向

Java技巧:在对标准流进行重定向  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  流重定向演示应

知识大全 c#中重定向windows控制台程序的输出信息

  这个问题来自社区提问代码保留一份用来以后回答      usingSystem;usingSystemComponentModel;usingSystemWindowsForms;namespac

知识大全 已为您重定向至该词条,更多含义请查看。我编辑了百度百科马佳佳powerful,为什么重定向到另一个词条呢

已为您重定向至该词条,更多含义请查看。我编辑了百度百科马佳佳powerful,为什么重定向到另一个词条呢?搜索结果重定向人们常常用简称或自己熟悉的称谓,来搜索某一人物或事物,而它们往往不符合百科标准词

知识大全 关于shell命令的定向输出 2;&1

  mymand>mylogtxt>&应该是最经典的用法了  命令的结果可以通过%>的形式来定向输出%表示文件描述符为标准输出stdout为标准错误stderr系统默认%值是

知识大全 使用Runtime.exec重定向本地程序调用

Java技巧:使用Runtime.exec重定向本地程序调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 java学习---GUI开发

java学习---GUI开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  java学习之——G

知识大全 Java GUI用户界面编程的基础

JavaGUI用户界面编程的基础  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java的GUI

知识大全 如何设计出有GUI特色的“纯”JAVA程序

如何设计出有GUI特色的“纯”JAVA程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在J

知识大全 Java GUI的发展和演化简史

JavaGUI的发展和演化简史  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当Java在年的春