1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Java - Ausgabe eines Baumes?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Tengu, 19.05.07.

  1. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    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
     
  2. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Eine JTextArea von Swing wäre dafür vielleicht passend. Dort kannst du mittels append(String) reinschreiben.
     
  3. tbo007

    tbo007 Empire

    Dabei seit:
    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 :)
     
  4. exe2nd

    exe2nd Jonathan

    Dabei seit:
    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"?
     
  5. JMR

    JMR Granny Smith

    Dabei seit:
    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.
     
  6. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    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
     
  7. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    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 ;).

    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
     
    #7 Tengu, 26.05.07
    Zuletzt bearbeitet: 26.05.07
  8. JMR

    JMR Granny Smith

    Dabei seit:
    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.
     

Diese Seite empfehlen