知识大全 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相关参考
Run>RunConfigurations>Common>File &nbs
Java技巧:在对标准流进行重定向 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 流重定向演示应
这个问题来自社区提问代码保留一份用来以后回答 usingSystem;usingSystemComponentModel;usingSystemWindowsForms;namespac
知识大全 已为您重定向至该词条,更多含义请查看。我编辑了百度百科马佳佳powerful,为什么重定向到另一个词条呢
已为您重定向至该词条,更多含义请查看。我编辑了百度百科马佳佳powerful,为什么重定向到另一个词条呢?搜索结果重定向人们常常用简称或自己熟悉的称谓,来搜索某一人物或事物,而它们往往不符合百科标准词
mymand>mylogtxt>&应该是最经典的用法了 命令的结果可以通过%>的形式来定向输出%表示文件描述符为标准输出stdout为标准错误stderr系统默认%值是
Java技巧:使用Runtime.exec重定向本地程序调用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
java学习---GUI开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java学习之——G
JavaGUI用户界面编程的基础 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java的GUI
如何设计出有GUI特色的“纯”JAVA程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在J
JavaGUI的发展和演化简史 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 当Java在年的春