System.out auf grafisches element umleiten

Hi,

vielleicht kann mir ja jemand helfen oder wenigstens sagen ob es geht oder nicht …

ist es möglich systemausgaben wie
system.out
grafisch umzuleiten … so das sie zum beispiel zur laufzeit in einem
JTextArea abgebildet werden …

wenn dies nicht geht, wie es es dann möglich die systemausgaben zu visualisiseren?

danke schon mal im vorraus … da es eine typische anfängerfrage ist …

Hi,

mit System.setOut(OutputStream out) kannst Du die Ausgabe in einen eigenen Stream umleiten, zum Beispiel einen ByteArrayOutputStream. Aus dem kannst Du dann den Text rausholen und in eine JTextArea schreiben.

Gruss,

Herb

Hi …

vielen dank erst mal …
das mit den OutputStream ist ok

doch ich habe da noch ein problem mit der oop

habe ein classe ADialog, diese soll die systemausgaben visualisieren,
und ruft die classe BDialog auf…
im BDialog kann man verschiedene optionen wählen …
mit dem click auf den OKButton des BDialoges schließt sich dieser
und eine action wird angestossen …
dabei werden ‚testausgaben‘ gemacht …
und diese testausgaben möchte ich in ADialog visualisieren …

wie mache ich das dann … das dies wirklich zur laufzeit geschieht ???

vielen vielen dank :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

im Grunde willst Du nur mit JTextArea.append() den Text im Dialog A ausgeben. Wendest Du das MVC Pattern an? Wenn Du eine Controllerklasse hast, die das im Dialog A anzuzeigende Datenmodell kontrolliert, dann ist das kein so grosses Problem. Sag einfach dem Controller, dass neue Daten für den Dialog da sind.

Eine Einführung in das MVC Pattern findest Du hier:
http://fara.cs.uni-potsdam.de/~kaufmann/tuts/mvc.pdf

(falls nötig)

Gruss,

Herb

1 Like

Hi,

danke für die Übermittlung des Startpunktes …
das hilft schon mal den überblick zu erhalten / programmieren …
jetzt muss ich nur noch den anfang finden wie ich diese drei grundregeln von
dem Model
dem View ( grafische darstellung mit swing referenzen )
dem controller
umsetzte bzw. wie diese aufgebaut sind

vielen vielen dank nochmals
das ist ech ein super forum

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Observer ist auch möglich
Hi,

noch eine kleine, schnelle Lösung:

Du kannst eine Klasse bauen, die das Interface Observer implementiert, ein kleines Beispiel:

public class Main 
{

 public static void main(String[] args)
 {
 Start start = new Start();

 System.out.println("end.");

 }

}

public class Start implements Observer
{
 public Datamodel model = new Datamodel();

 /\*\*
 \* 
 \*/
 public Start()
 {
 super();
 model.addObserver(this);
 model.setData("teststring");
 }

 /\* (non-Javadoc)
 \* @see java.util.Observer#update(java.util.Observable, java.lang.Object)
 \*/
 public void update(Observable o, Object arg)
 {
 System.out.println("update called... new value is:" +model.getData() );

 }

}

public class Datamodel extends Observable
{
 private String m\_Data = null;
 public static void main(String[] args)
 {
 }
 public void setData(String newValue)
 {
 if(newValue!=null)
 {
 m\_Data = newValue;
 setChanged();
 notifyObservers();
 }
 }
 public String getData()
 {
 return m\_Data;
 }
}

Bei jeder Änderung im Datenmodel wird der Observer (zum Beispiel Dein Dialog A) benachrichtigt und kann die Daten in die TextArea schreiben.

Gruss,

Herb