如何将控制台输出信息转到JTextArea中


现在要给以前的程序加上GUI界面,原来程序中的控制台输出信息,怎么把这些信息转到JTextArea中呢?不希望到处寻找System.out.println()进行修改。

对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
回复次数:9
如何将控制台输出信息转到JTextArea中_第1张图片
Kokonol
Kokonol
等级:
结帖率:100%

#1得分:40 回复于: 2006-05-28 09:15:37
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Test extends JFrame {
public static JTextArea text; //输出JTextArea
private static class System //覆盖System.out.pringln()
{
private static class out
{
private static void println(String a)
{
text.append(a);
}
}
}
public static void main(String args[]) {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public Test() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
text = new JTextArea();
getContentPane().add(text, BorderLayout.CENTER);
//测试按钮
final JButton button = new JButton();
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent e) {
System.out.println("OK");
}
});
button.setText("New JButton");
getContentPane().add(button, BorderLayout.SOUTH);
}
}

【限时优惠】第五届云计算大会社区门票抢购
对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
如何将控制台输出信息转到JTextArea中_第2张图片
Kokonol
Kokonol
等级:
结帖率:100%

#2得分:0 回复于: 2006-05-28 09:19:20
主要就是这里了,覆盖一下System.out.println()
不过JTextArea必须声明为static的
我也在学习中,哪为大哥有更好的方法,还希望能学习学习
public static JTextArea text; //输出JTextArea
private static class System //覆盖System.out.pringln()
{
private static class out
{
private static void println(String a)
{
text.append(a);
}
}
}

欢迎关注CSDN产品客服微博
对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
如何将控制台输出信息转到JTextArea中_第3张图片
trumplet
trumplet
等级:
结帖率:100%

#3得分:0 回复于: 2006-05-28 09:42:15
呵呵,楼上够狠呀,呵呵

CSDN问答频道3月声望排行榜出炉
对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
如何将控制台输出信息转到JTextArea中_第4张图片
cheng_young
cheng_young
等级:
结帖率:100%

#4得分:60 回复于: 2006-05-28 11:54:56
Kokonol的方法应该说很有创意,但截获在其他类里的输出就有问题了
标准的方法是调用
System.setOut(PrintStream out)
System.setErr(PrintStream err)
即提供一个自定义的PrintStream,将一个JTextArea作为PrintStream的输出目的地。
基本思路(也可考虑使用PipedInputStream,PipedOutputStream ):
OutputStream textAreaStream = new OutputStream() {
public void write(int b) throws IOException {
text.append(String.valueOf((char)b));
}
public void write(byte b[]) throws IOException {
text.append(new String(b));
}
public void write(byte b[], int off, int len) throws IOException {
text.append(new String(b, off, len));
}
};
PrintStream myOut = new PrintStream(textAreaStream);
System.setOut(myOut);
System.setErr(myOut);
借用一下上面的示例代码:
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.io.*;
public class Test extends JFrame {
public static JTextArea text; //输出JTextArea
public static void main(String args[]) {
OutputStream textAreaStream = new OutputStream() {
public void write(int b) throws IOException {
text.append(String.valueOf((char)b));
}
public void write(byte b[]) throws IOException {
text.append(new String(b));
}
public void write(byte b[], int off, int len) throws IOException {
text.append(new String(b, off, len));
}
};
PrintStream myOut = new PrintStream(textAreaStream);
System.setOut(myOut);
System.setErr(myOut);
try {
Test frame = new Test ();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public Test () {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
text = new JTextArea();
getContentPane().add(text, BorderLayout.CENTER);
//测试按钮
final JButton button = new JButton();
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent e) {
System.out.println("OK");
System.out.println("测试按钮");
}
});
button.setText("New JButton");
getContentPane().add(button, BorderLayout.SOUTH);
}
}

对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
xiaogaozxm83
xiaogaozxm83
xiaogaozxm83
等级:
结帖率:100%

#5得分:0 回复于: 2006-05-28 21:07:02
Kokonol() 好会想啊
这样也搞定了

对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
如何将控制台输出信息转到JTextArea中_第5张图片
Bluewoods
Bluewoods
等级:
结帖率:100%

#6得分:0 回复于: 2006-05-30 14:30:25
Kokonol,cheng_young(古道西风瘦马)都很有想法,顶

对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
如何将控制台输出信息转到JTextArea中_第6张图片
UnAgain
UnAgain
等级:
结帖率:94.12%

#7得分:0 回复于: 2006-05-31 09:24:49
不错,顶

对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
如何将控制台输出信息转到JTextArea中_第7张图片
harston
harston
等级:
结帖率:100%

#8得分:0 回复于: 2006-05-31 13:29:20
学习了!!

对我有用[0]丢个板砖[0]引用 | 举报 |
编辑删除
管理
mq612
mq612
mq612
等级:
结帖率:100%

#9得分:0 回复于: 2006-05-31 14:04:12
Java 5.0中好象有专门针对控制台输出的类,记不清是哪个类了,楼主再查查看

你可能感兴趣的:(春)