myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Java - rekursives Platzieren im JPanel (https://mygully.com/showthread.php?t=3822878)

Dante1253 13.05.15 21:13

Java - rekursives Platzieren im JPanel
 
Hallo,
ich hoffe, ihr könnt mir bei einem vermutlich eigentlich sehr leichten Problem auf die Sprünge helfen.

Ich habe auf meiner Oberfläche ein JPanel mit Breite b und Höhe h. Nun möchte ich "oben in die Mitte" ein JLabel platzieren und dann rekursiv in beiden "Hälften" des JPanels etwas darunter wiederum 2 JLabels etc. pp. Am liebsten würde ich hierbei die "rekursiven Kinder" mit dem "Vater" durch einen Strich verbinden (praktisch wie ein Binärbaum), aber das ist erstmal irrelevant.

Ich bekomme es allerdings nicht einmal hin, auch nur ein JLabel zu setzen :)

Ich gebe zu meiner Schande zu, dass ich bislang immer einen großen Bogen um alles, was mit grafischer Benutzeroberfläche zu tun hat, gemacht habe... Bei Java-Code auf der Konsole hingegen bin ich relativ sicher.

Würde mich über ein paar Gedanken freuen, viele Grüße
Dante

marian123 11.06.15 00:32

Hey,
An deiner Stelle würde ich erstmal ne Klasse scheiben die von JLabel erbt und die klassichen Attribute eines Binary Trees hinzufügen sprich:

Code:

public BLabel extends JLabel<E>{

private BLabel left, right;

private E key;

....

(get und set methoden)

...


}

und dann würde ich ne Klasse machen die diese Baumstruktur representiert

Code:

public class LabelTree extends JPanel<E>{

BLabel<E> root;

(insert, get, remove und print methoden (werden rekursiv implementiert))

...

}


und du musst dir noch nen Comperator zum Vergleich definieren wenn du die BLabels nach nen bestimmten Kriterium anordnen willst.

hatte jetzt kein bock die rekursiven methoden da hinzuschreiben kannst mich ja anschreiben, wenn du hilfe bei der Implementierung brauchst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.