GUI erstellen, herangehensweise: Pixel auf untersterebene?
hmm
- java
Hallo,
ich schreibe gerade eine GUI, leider in JavaFX. Grafischeelemente kann ich dort u.a. in Pane's anordnen, die jeweils Links, Rechts, Oben, unten und Zentrum besitzen, dort habe ich einen sogenanten Linechart eingestellt, ein ganz normales Koodinatensystem mit x und y Achse. In diesem Koordinatensystem kann ich Punkt-Elemente per Double Koordinanten eintragen. Nun möchte ich aber einige Linien von den Punkten zur x-Achse zeichen, dass problem ist, dass dies nur geht indem ich Line-Elemente direkt per Pixelangabe anordne. Leider Passen die Pixeleingaben nicht zu den Koordinanten eingaben so dass ich diese Quasi umrechnen müsste. Alternativ könnte ich auf unterster Programmierebene etwas schreiben, dass sich irgendwie um die anordnung der Elemente kümmert.
Frage: Wie würdet ihr hier vorgehen? Ich überlege auch, auf das koordinantensystem zu verzichten und Quasi ein eigenes zu schreiben um dann die GUI per verschachtelten Pane's aufteilen zu können.
so sieht die gui aktuell aus: Aktuelle GUI
die linie die nach unten geht soll von dem schwarzen kleinen punkt aus nach unten gehen.
Tach!
Nun möchte ich aber einige Linien von den Punkten zur x-Achse zeichen, dass problem ist, dass dies nur geht indem ich Line-Elemente direkt per Pixelangabe anordne. Leider Passen die Pixeleingaben nicht zu den Koordinanten eingaben so dass ich diese Quasi umrechnen müsste.
Genauso ist es. Lässt sich einfach mit dem Dreisatz bewerkstelligen. Wird komplexer, wenn noch Drehungen, Verschiebungen, Zoom und andere Transformationen ins Spiel kommen. Üblicherweise gibts dafür bereits Komponenten, die das Problem schon gelöst haben, und die man mit den Werten des eigenen Koordinatensystems ansprechen kann. Das hört, wenn ich mich recht erinnere, auf den Namen: Weltkoordinaten in Pixelkoordinaten umrechnen.
dedlfix.
ok, mach ich so!
ich hab aktuell:
eine klasse für das hauptfenster
eine klasse für das chartdiagram, diese klasse ordnet die einzelnen "blatt elemente" in dem chart an
eine klasse blatt
funktionsweise:
-> hauptfenster erstellt die klasse chartdiagramm plus einen aktionhandler
-> wenn immer der aktionhandler des hauptfensters ausgelöst wird, passiert folgendes:
schritt: die chartdiagrammklasse erstellt neue objekte vom typ blatt
schritt: im anschluss wird das chartdiagramm in der gui komplett neu erstellt
die klasse blatt wiederum hat einen aktionhandler, der (wenn er ausgelöst wird) eine linie zeichent
der code erscheint mir ziemlich unpraktisch, kann ich das irgendwie sauberer in klassen aufteilen? das objekt blatt bekommt den pane vom hauptfenster über das chartdiagrammobjekt durchgereicht, damit ich dass im actionhandler des blatts benutzen kann. diese ganzen actionhandler, sollte ich die lieber irgendwo zentral setzen?
ich muss noch viele sachen einbauen, das grundgerüst das ich mir schreibe sollte entsprechend flexibel sein.