• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Java - Ausgabe eines Baumes?

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Hallo, hallo!

Bin grade am Java-Bastln. ;) Undzwar möchte ich eine Ausgabe, die eigentlich auf der Konsole erfolgen würde, in einem "normalen" Fenster haben. Also als AWT oder Swing Anwendung. Weiß jemand zufällig, wie man das macht.

Grob gesagt: Ich will anstatt, dass "System.out.println("foo");" "foo" im Terminal ausgibt, diese Ausgabe auf ein Fenster verlagern. Das bleibt erst mal eine Testausgabe.

Die Textausgabe allerdings soll ein "Baum" werden... also werd ich wohl textlich einfach die verschiedenen Ordnungen ausgeben. Grafisch wird es da wohl nicht wirklich was geben, oder? Wär natürlich netter ;).

edit: Und noch was... wie kann man im Hintergrund ne Musik laufen lassen? So als mp3 oder so...

Gruß,
Mark
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Grob gesagt: Ich will anstatt, dass "System.out.println("foo");" "foo" im Terminal ausgibt, diese Ausgabe auf ein Fenster verlagern. Das bleibt erst mal eine Testausgabe.

Eine JTextArea von Swing wäre dafür vielleicht passend. Dort kannst du mittels append(String) reinschreiben.
 

tbo007

Empire
Registriert
06.02.05
Beiträge
86
Ich bin zwar ein SWT Mensch und würde so etwas mit einem JFACE TreeViewer bzw einem SWT Tree lösen, aber guck dir doch mal den Swing Jtree an. Happy Rekursion :)
 

exe2nd

Jonathan
Registriert
22.05.07
Beiträge
82
Für ne ausgabe in nem fester reicht ja JOptionPane
Code:
JOptionPane.showMessageDialog(null,"foo")
aber was meinst mit "Baum"?
 

JMR

Granny Smith
Registriert
17.04.07
Beiträge
12
Du drückst Dich etwas knapp aus, was das eigentliche Ziel Deiner Anwendung ist und wo genau Dein Problem liegt. Ich versuche mal zu raten:

Wenn das falsch geraten ist, dann solltest Du Dein Problem etwas genauer beschreiben, dann können wir Dir sicher helfen.
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
AHmm, ich vermutze ebenfalls, dass Du Dir selbst nicht ganz im klaren bist, was Du eigentlich willst. Ein Log ist entweder kein Baum, oder die Daten, die Du darstellen willst, sind kein log.

Du kannst dir eine JTextarea nehmen und dort alles, was Du sonst auf System.out ausgeben würdest, anhängen.

Wenn Du alles, was irgendein Code (nicht Deiner) ausgibt dort sehen willst, wirds schon komplizierter, dazu musst Du den System.out - Stream umsetzten und 'mitlesen'. Wenn Dich das wirklich interessiert, kann ich Dir das hierher posten.

Falls Du mp3 - Files abspielen willst: hier gibt es eine Library dafür: mp3-Lib

Du wirst aber weder im ersten, noch im zweiten Fall darum herumkommen, dich ernsthaft mit Java und den zugrundeliegenden Konzepten auseinanderzusetzen, um zum Erfolg zu kommen.

Gruß,

.commander
 

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Danke schon mal für die äußerst praktischen Tipps. Zwar lern ich an der Uni seit nem 3/4 Jahr Java, aber AVL oder Swing hab ich selten angefasst.

Mit gehts einfach um die sinnvolle Ausgabe eines Baumes... die irgendwie stattfinden soll.

Um das zu tun habe ich eigentlich folgenden Algo:

Code:
public static void printAVLBaum (Baum b, int tiefe) {

if (! b.empty()) {         //Wenn also b nicht leer ist
print AVLBaum(b.right(), tiefe+1); // rechten Teilbaum ausgeben
for (int i=0; i<tiefe; i++) // entsprechend der Rekursions- 
IO.print(" "); // tiefe einruecken 
IO.println((AVLBaum)b); // Wurzel und Balance ausgeben 
printAVLBaum(b.left(), tiefe+1); // linken Teilbaum ausgeben 
} 
} 
}

Laut Aufgabe: "geben sie einen AVL Baum sinnvoll aus".
Sinnvoll heißt für mich, dass man die "Baumstruktur" erkennt, visuell. Da dachte, dass Java evtl. vorgefertigte Elemente hat.
Nun kommen aber in diesen Baum einfach Int Werte rein.

Was ich will ist eigentlich genau diese Int Werte hierarchisch ausgeben, _oben_ die Wurzel, _unten_: die Blätter.
Und da suche ich entweder ein ASCII-Fritzen Teil, was die Konsole rockt, oder ein grafisches Element.
(Der Algo oben macht das liegend)

Mal gucken, ob ich das mit obrigen Tipps auf die reihe kriege ;).

Du kannst dir eine JTextarea nehmen und dort alles, was Du sonst auf System.out ausgeben würdest, anhängen.

Mhh, also ich finde das problematisch. Mir gehts aber nur um meinen Code... aber selbst das ist schon recht haarig.
Ich bin kein großer Freund von Java... ernsthaft auseinandersetzen... nja... hm. Muss ja.

Gruß,
Mark
 
Zuletzt bearbeitet:

JMR

Granny Smith
Registriert
17.04.07
Beiträge
12
Deine Antwort zeigt, dass Du offensichtlich nur einen strukturierten Text ausgeben willst, Dein Algo schreibt ja direkt Text in einen Stream. Den kann man dann natürlich nicht nur auf einer Konsole ausgeben, sondern auch auf In einem separaten Fenster in einer Textarea. Ob das dann allerdings wirklich besser ist, wage ich zu bezweifeln, wo ist da der Vorteil gegenüber der Konsole?

Wenn Du hingegen einen graphischen Baum machen willst, dann kannst Du das nicht mit Deinem Algo machen. Du musst dann in statt der Ausgabe ein TreeModel erzeugen, dass aus TreeNodes (am besten DefaultMutableTreeNodes) besteht. Diese kann man dann einem JTree setzen und der zeigt das dann an.