Sternförmige Darstellung

Chikea

Grünschnabel
Hi Leute,

ich programmiere gerade eine Swing Application und möchte darin in einem Fenster Komponenten sternförmig anordnen. Sprich ein Zentrum und drum herum die mit Linien verbundenen anderen Komponenten. Bin etwas ratlos wie ich das ganze realisieren soll...
Weiß jemand ob es dafür bereits eine Bibliothek gibt? Ach ja das ganze soll sich dynamisch in Abhängigkeit von der Anzahl der Komponenten aufbauen!

Dankääää!
Chikea
 
Hallo,

es können maximal 12 Komponenten werden. Die Komponenten selbst sind Bilder (einfachster Fall) oder selbst entwicklete Komponenten.

Gruße
Chikea
 
Vielleicht wird es da Zeit einen neuen LayoutManager zu entwickeln und diesen dann einzusetzen. Also falls Du diesen Weg wählst, wäre es super, wenn Du den fertigen hier ausstellen würdest :)

Vliel Gück

Takidoso
 
Ich habe mal ein kleines Brainstorming durchgezogen und bin zu folgendem gekommen.


  • Sinnvoll wäre vermutlich einen LayoutManger2 zu implementieren.
  • Die Constraints sollten dabei natürlich so definiert werden, dass die Angaben die dort abgelegt sind ausreichen die Componenten zu positionieren (klingt zwar banal ist aber im Detail auszuarbeiten).
  • Interessant ist die Frage, ob die Komponenten gleichförmig also wie ein Kreis angeordnet werden sollen, oder ob sie zum Zentrum unterschiedlich entfernt sein können/dürfen.
  • Es ist zu überlegen, ob das Zeichnen der Linien zwischen den Kompneten und dem Zentrum Sache des obligenden Panels sind oder die des Layoutmanagers, vermutlich sollte das Panel lediglich vom LayoutManager Informationen zum Zeichnen der Linien anforder können.

So das ist erstmal grob angedacht. Wenn Du magst könnten wir das auch gemeinsam verfeinern, wäre ein sehr interesantes Thema.

Takidoso
 
hi chikea,
vielleicht solltest du das null-layout verwenden, dadurch kannst du komponenten pixelgenau positionieren. dann nimmst du alle deine sternkomponenten und speicherst sie in einer liste.
du ueberschreibst die paint-methode deines jpanels und fuegst dort einen iterator ein, der die liste abarbeitet, um die einzelnen komponeten zu zeichnen. die position ergibt sich aus der anzahl der komponenten (der kreis hat 360grad, die y-achse liegt bei 0grad, bei gleichmaessiger verteilung kannst du den entsprechenden winkel berechnen) und dem abstand(radius) vom mittelpunkt.
dx = radius*sin(winkel)
dy = radius*cos(winkel)
damit solltest du deinen stern gebaut bekommen.
 
Zurück