java输出重定向gui_Java – 将system.out.println重定向到JLabel
您只需要更改默认输出…
public static void main(String[] args) throws UnsupportedEncodingException
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
System.setOut(new PrintStream(bos));
System.out.println("outputing an example");
JOptionPane.showMessageDialog(null, "Captured: " + bos.toString("UTF-8"));
}
public static void main(String[] args) throws UnsupportedEncodingException
{
CapturePane capturePane = new CapturePane();
System.setOut(new PrintStream(new StreamCapturer("STDOUT", capturePane, System.out)));
System.out.println("Output test");
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(capturePane);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
System.out.println("More output test");
}
public static class CapturePane extends JPanel implements Consumer {
private JLabel output;
public CapturePane() {
setLayout(new BorderLayout());
output = new JLabel("");
add(new JScrollPane(output));
}
@Override
public void appendText(final String text) {
if (EventQueue.isDispatchThread()) {
output.setText(output.getText() + text + "
");
} else {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
appendText(text);
}
});
}
}
}
public interface Consumer {
public void appendText(String text);
}
public static class StreamCapturer extends OutputStream {
private StringBuilder buffer;
private String prefix;
private Consumer consumer;
private PrintStream old;
public StreamCapturer(String prefix, Consumer consumer, PrintStream old) {
this.prefix = prefix;
buffer = new StringBuilder(128);
buffer.append("[").append(prefix).append("] ");
this.old = old;
this.consumer = consumer;
}
@Override
public void write(int b) throws IOException {
char c = (char) b;
String value = Character.toString(c);
buffer.append(value);
if (value.equals("
")) {
consumer.appendText(buffer.toString());
buffer.delete(0, buffer.length());
buffer.append("[").append(prefix).append("] ");
}
old.print(c);
}
}
java输出重定向gui_Java – 将system.out.println重定向到JLabel相关推荐
- Java基础学习之用System.out.println()输出中文字符串乱码问题
问题描述: 在学习"java基本数据类型"相关知识点过程中,使用不同文本编辑器编写java源代码文件在cmd控制台中编译和运行过程中多次出现乱码情况. 电脑操作系统:win10 企 ...
- java基本输入类型数据System.out.println()或System.out.print()
转载于:https://www.cnblogs.com/yihujiu/p/5990204.html
- java 里面write,java 中 System.out.println()和System.out.write()的区别
java 中 System.out.println()和System.out.write()的区别. 这两个函数一个是System.out.write()输出字符流,System.out.printl ...
- java 输出数据类型_输入输出和java数据类型
一.输入有两种方式. 1.使用Scanner. 使用时要在开始声明引用import java.util.Scanner包.然后定义Scanner对象: Scanner input=new Scan ...
- java 输出文件到mac路径_Java 中几种获取文件路径的方式
原标题:Java 中几种获取文件路径的方式 1. 前言 Java开发中我们经常要获取文件的路径,比如读取配置文件等等.今天我们就关于文件的路径和如何读取文件简单地探讨一下. 2. 文件的路径 文件的路 ...
- java输出数组中出现的次数最多的那个及次数
总结:理解每一个定义的变量 package com.aini;//一组数据,要求统计出最大值出现了多少次 public class Xd {public static void main(String ...
- Java输出一个菱形(数字符号都可)
前面写了一篇关于等腰三角形的文章,这一片相当于是等腰三角形的进阶版,菱形可以拆分为两部分,上半部分和下半部分分别是两个等腰三角形.拆分起来更容易去理解~ 有两种方式可以解决! 方式一代码如下: pub ...
- system.out.println 函数使用
System.out.println快捷键 syso+ALT+/ +: 链接作用 "": 固定字符用引号引起来,引号之外格式化输出对应得值 public class Test {p ...
- 慎用System.out.println!!!
初学者一般在开发中或者调试bug的时候,都会习惯性的使用System.out.println语句,输出到控制台中,观察数据是否正常.开发或者调试完毕,很可能就忘记删除,直接就发布到生产中去了. 问题导 ...
最新文章
- 【bzoj5020】[THUWC 2017]在美妙的数学王国中畅游 泰勒展开+LCT
- 2.MyBatis 动态SQL
- 模态框在IE下的问题,即position:fixed在IE下不兼容的处理方式
- 工欲善其事必先利其器——web调试工具firebug
- Py之Matplotlib:python包之Matplotlib库图表绘制经验总结(中英文字体修改、横坐标文字进行横/纵向显示、控制坐标轴范围等)之详细攻略
- 快速部署-01-docker
- 大牛推荐的10本学习 Python 的好书
- 网易云音乐工程师,亲自揭晓消息队列改造之路! | 技术头条
- wamp 403 禁止访问
- 中国计算机学会推荐国际学术期刊--数据库/数据挖掘/内容检索
- java泛型与集合中文版,第8章java泛型与集合类.doc
- 为什么在使用m2e时Eclipse WTP不发布库
- 如何在手机上将图片转换为文字
- Android模仿新浪微博(自定义ListView下拉刷新)
- 用好知晓云,从此不再「网抑云」
- 【Linux】共享内存
- ROS:*.bag.active恢复
- 自大--萨旦最偏爱的原罪
- 老虎棒子鸡”试水有米iOS推荐墙,10天收入近5千元
- Win10 如何隐藏控制面板里面的BitLocker 驱动器加密功能
热门文章
- iphone退款申请教程_【揭秘】朋友圈卖的iOS退款、王者荣耀0元撸点券教程
- 【英语学习】【Level 07】U05 Best Destination L5 Top choice
- 【英语学习】【Daily English】U04 Neighborhood L02 Would you mind if I used your ladder for a second?
- Intel 64/x86_64/x86/IA-32处理器串行化指令(1) - 概述
- Netty 5用户指南
- FTP服务器构建与维护,ftp服务器的搭建与三种访问途径
- mysql linux设置密码_Linux下第一次使用MySQL数据库,设置密码
- easyswoole数据库连接池_easyswoole orm配置数据库连接
- catia螺纹孔在二维图上不显示_螺钉的螺纹是搓牙加工的,那么螺母的螺纹是怎么加工的呢...
- vue后端框架mysql_vue框架之前后台交互、element-ui