Nachricht von Console auf Screen wiedergeben die zweite:-)

Status
Nicht offen für weitere Antworten.

steve77

Bekanntes Mitglied
Hallo leute,


leider hab ich das problem das ich gestern geschildert hatte noch nicht hinbekommen (siehe thread: Nachricht von Console auf Screen wiedergeben).
Nochmal zur Erklärung, was ich eigentlich genau möchte:
Ich habe ein Programm, dass mir Nachrichten auf der Console von z.B. Eclipse ausgibt, diese Nachrichten möchte ich nun aber nicht nur auf der Console sondern auf einem Screen, den ich erstellt habe, per Button und Mouseclick gezeigt bekommen.
Ich habe folgenden Quellcode formuliert:

Code:
......



public void actionPerformed(ActionEvent e) {

				try {
									
				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();
				
				
				PipedInputStream pis = new PipedInputStream();
				PipedOutputStream pos = new PipedOutputStream(pis);
				System.out.println(pos);
				//der Standardausgabekanal wird umgesetzt
				System.setOut(new PrintStream(pos));
			
				String test = pos.toString();
				
				textArea.append("Variable test: " + test);
				
                                                                }


                                                                ......


Ergebnis:

[08:42:20] :
Variable test: java.io.PipedOutputStream@12b7eea



Am Anfanfg steht die Zeit, wann der Buttonklick erfolgte (das funktioniert auch schon). Aber bei den Nachrichten gibt es noch probleme, da bekomme ich eine merkwürdige Zahlenfolge, ich denke mal, dort drinnen stehen die Nachrichten, aber wie komme ich daran.
Vielen Dank schonmnal für die Hilfe....
 
Und dafür brauchst du jetzt einen neuen Thread für exakt das selbe Problem, welches in deinem anderen Thread eigentlich schon gelöst ist!?
 
Hallo Hobbit im Blutrausch,

ich sag mal so, ich bekomme nun ja ein ergebnis, aber leider nicht das was ich erwartet habe. Eigentlich sollte da dann sowas in dieser art stehen.

[08:55:29] :
log4j:WARN Please initialize the log4j system properly.
....
....
....
 
Nachdem ich dir eigentlich schon alle Arbeit abgenommen habe und du nur noch zusammensetzen musstest (was dir scheinbar nicht gelungen ist :roll: ) hier ein komplett ausführbares Beispiel:

Code:
import java.io.IOException;
import java.io.OutputStream;

import javax.swing.JTextArea;


public class JTextAreaOutputStream extends OutputStream {

	private JTextArea area = null;
	
	public JTextAreaOutputStream(JTextArea area) {
		this.area = area;
	}
	
	public void write(int b) throws IOException {
		area.append(String.valueOf((char)b));
	}

}

Code:
import java.io.PrintStream;

import javax.swing.JFrame;
import javax.swing.JTextArea;


public class Test {

	public static void main(String[] args) {
		
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(400, 300);
		JTextArea area = new JTextArea();
		frame.add(area);
		
		System.setOut(new PrintStream(new JTextAreaOutputStream(area)));
		
		frame.setVisible(true);
		
		System.out.println("test");
		System.out.println("juhuuu");
	}
}

Wenn du auch noch ErrorStreams (System.err) abfangen möchtest, musst du natürlich auch noch diesen Stream umleiten!
 
Bier ist auch kein thema;-) Aber eine klitze kleine frage habe ich da noch. ich hatte in meinem Beispiel von oben ein merkwürdiges ergebnis:

java.io.PipedOutputStream@4cee32

Was bedeutet das eigentlich?
 
Das ist die Adresse im Arbeitsspeicher deines PipedOutputStreams. Und Thread abhaken nicht vergessen 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben