System.err auf JTextArea umleiten

ZAntjeZ

Mitglied
Hallo,

ich habe folgenden Code um die System.out auf eine JTextArea umzuleiten:
Code:
...
MeinPrintStream ausgabe=new MeinPrintStream(text);
		System.setOut(ausgabe);
....
class MeinPrintStream extends PrintStream
	{
		public MeinPrintStream(JTextArea anzeige)
		{
			super(new MeinOutputStream(anzeige));
		}
	}
	
	class MeinOutputStream extends OutputStream
	{
		private JTextArea anzeigeText;
		
		public MeinOutputStream(JTextArea anzeige)
		{
			this.anzeigeText=anzeige;
		}
		
		public void write(int b)
		{
			char c=(char)b;
			anzeigeText.append(String.valueOf(c));
		}
	}

nun möchte ich auch die System.err umleiten. Von welcher Klasse muß ich meinen Stream ableiten? Muss ich eine neue Klasse anlegen?

tschau
 
Hallo!

Schau mal hier:
Code:
/*
 * Created on 27.12.2004@23:07:30
 *
 * TODO Licence info
 */
package de.tutorials;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * @author Administrator
 * 
 * TODO Explain what I do...
 */
public class ErrorTextAreaExample extends JFrame {

	private JTextArea textArea;

	private JButton btn;

	private ByteArrayOutputStream baos = new ByteArrayOutputStream();

	public ErrorTextAreaExample() {
		super("ErrorTextAreaExample");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		System.setErr(new PrintStream(baos));

		textArea = new JTextArea();
		JScrollPane scrollPane = new JScrollPane(textArea);
		scrollPane.setPreferredSize(new Dimension(320, 240));

		btn = new JButton("provoke error!");
		btn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				try {
					throw new Exception("abc");
				} catch (Exception ex) {
					ex.printStackTrace();
				}

				StringBuffer buffer = new StringBuffer();
				
				SimpleDateFormat sdf = new SimpleDateFormat("[hh:mm:ss]");
				buffer.append(sdf.format(new Date()));
				buffer.append(" : ");
				buffer.append(new String(baos.toByteArray()));
				buffer.append("\n");
				textArea.append(buffer.toString());
				baos.reset();
			}
		});

		Container c = getContentPane();
		c.add(scrollPane, BorderLayout.CENTER);
		c.add(btn, BorderLayout.SOUTH);

		pack();
		setVisible(true);
	}

	public static void main(String[] args) {
		new ErrorTextAreaExample();
	}
}

Gruß Tom
 
Irgendwie kann

public void write(int b)
{
char c=(char)b;
anzeigeText.append(String.valueOf(c));
}

nicht mit Umlauten umgehen... Wie kann ich denn ein ö,ä... ordentlich auf der Konsole ausgeben?
 
Zurück