JavaFX Absolute Positionierung und Skalierung

Ernesto95

Aktives Mitglied
Moin zusammen !

In der Regel (insbesondere bei Anwendungen) macht es ja Sinn die Layoutmanager die ganze Arbeit verrichten zu lassen und frei werdenden Platz vernünftig zu vergeben. In Einzelfällen aber, wenn einfach nicht mehr Platz benötigt wird weil es einach nicht mehr Daten zum anzeigen gibt macht es keinen Sinn z.B. Tabellen oder Listen mehr Platz zur Verfügung zu stellen. Als Beispiel sei hier z.B. erwähnt wenn man alte C64 Spiele wie z.B. Kaiser nachprogrammieren will.

Dennoch sollte man dem User die Möglichkeit geben möglichst den kompletten Bildschirm auszufüllen. Die Lösung wäre hier wie im TV Bereich je nach Größe des Fensters jedes einzelne Element entsprechend in der Größe und in der Position neu auszurichten so das es entweder in der Breite oder in der Höhe maximiert ist und überflüssigen Platz wie im TV bei abweichendem Bildformat mit schwarzen Balken abzugrenzen.

Ich habe es mit Hilfe absoluter Positionierung und abgeleiteter Node Klassen geschafft (siehe Screenshots). Der Code ist aber noch "sehr dreckig" daher spare ich mir hier vorerst Codeausschnitte, reiche diese aber bei Interesse gerne nach.

Kurz zur Umsetzung: Jede Node bekommt eine Default Größe und Position basierend auf der Auflösung für die programmiert wird zugewiesen.

Der Root Container ist eine Stack Pane, diese zentriert die ihr zugewiesene Pane. An der Width und Height Property der Scene wird ein ChangeListener registriert. Dieser berechnet einen Multiplikator um den die Pane in der Größe verändert wird. Nachdem dies geschehen ist werden alle in der Pane vorhanden Nodes entsprechend dem Multiplikator neu positioniert und in ihrer Größe angepasst, inkl. der Schriftgröße (je nach Node).

Funktioniert wie man an den Screenshots sehen kann prima, wobei ich noch nicht weiter ins Detail gegangen bin inwiefern meine Eingriffe eventuelle FX Features wie Animation oder Transformation beeinträchtigen.

Die schlechte Bildqualität liegt übrigens daran das ich aktuell nur mit png Files arbeite da diese zum testen schneller zu erstellen sind. In einer finalen Anwendung sollte natürlich wo immer möglich svg benutzt werden.

Nach langer Einleitung jetzt zur Intention dieses Beitrags: Bin gestern durch Zufall (ja ich bin noch in der FX Lernphase da kennt man noch nicht alles :p) auf die boolean managed (von Node) sowie in diesem Zusammenhang auf die Methoden resize (von Region) und resizeRelocate (von Node) gestoßen. Für mich las sich das erstmal so das man hiermit genau das gleiche Ziel erreichen könnte. Trotz langer Nacht hatte ich aber keinen Erfolg.

Jetzt die finale Frage: Ist das von mir programmierte Verhalten mit JavaFX "Hausmitteln" umsetzbar oder Bedarf es so wie ich es gemacht habe für die Kalkulation der Position und Größe Handarbeit des Programmierers ?

Vielen Dank für eure Rückmeldung !

Grüße Ernesto95
 

Anhänge

  • 1.png
    1.png
    213,2 KB · Aufrufe: 29
  • 2.png
    2.png
    119 KB · Aufrufe: 29
  • 3.png
    3.png
    77,8 KB · Aufrufe: 27

Schmetterhand

Aktives Mitglied
Du könntest es mal mit einem "GridPane"-Layout versuchen. das funktioniert schon bei Swing wunderbar, und es hat flexible Spalten und Zeilen, wobei Komponenten auch über mehrere Splaten oder Zeilen gehen können (falls du das brauchst).
Noch als Tipp (weißt du bestimmt sowieso): Am Besten verwendet man den JavaFx-SceneBuilder, um komplexe JavaFx-GUIs zu erstellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Absolute Position von Komponenten AWT, Swing, JavaFX & SWT 3
lumo SWT Absolute position einer Composite/Control AWT, Swing, JavaFX & SWT 5
J absolute Position einer JComponent ermitteln AWT, Swing, JavaFX & SWT 4
V Absolute Postionierung AWT, Swing, JavaFX & SWT 4
C GridBagLayout - absolute Größe AWT, Swing, JavaFX & SWT 3
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
B LayoutManager Positionierung von Buttons´s AWT, Swing, JavaFX & SWT 2
Kenan89 LayoutManager MigLayout Positionierung von Panels AWT, Swing, JavaFX & SWT 4
S Swing Positionierung eines Labels in einem Panel AWT, Swing, JavaFX & SWT 2
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
R Swing Positionierung von Komponenten AWT, Swing, JavaFX & SWT 5
Q Dynamische Zahl und Positionierung von Objekten AWT, Swing, JavaFX & SWT 5
J Punkt-genaue Positionierung von SWT-Komponenten AWT, Swing, JavaFX & SWT 10
A Positionierung von Komponenten in JFrame AWT, Swing, JavaFX & SWT 6
Strahlungsleck Swing Positionierung von Elementen im GridBagLayout AWT, Swing, JavaFX & SWT 2
M jPopupMenu - Problem bei der Positionierung AWT, Swing, JavaFX & SWT 3
V textarea Problem Positionierung AWT, Swing, JavaFX & SWT 2
X Relative positionierung in einem JInternalFrame AWT, Swing, JavaFX & SWT 3
F Graphics2D scale und Positionierung einer TextArea AWT, Swing, JavaFX & SWT 8
G positionierung des eingabefensters AWT, Swing, JavaFX & SWT 2
R JFrame -- Variable Positionierung durch Window Manager? AWT, Swing, JavaFX & SWT 2
D Probleme bei der Positionierung von JPopupMenu AWT, Swing, JavaFX & SWT 2
K Positionierung in der Menüleiste AWT, Swing, JavaFX & SWT 3
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
K Automatische Skalierung von GUI Elementen (Java Swing) AWT, Swing, JavaFX & SWT 2
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
E Drucken von JPanel mit richtiger Skalierung AWT, Swing, JavaFX & SWT 5
P Problem - Zeichenungsfehler nach Skalierung oder Transformation AWT, Swing, JavaFX & SWT 4
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
R JFreeChart Skalierung zur Laufzeit ändern AWT, Swing, JavaFX & SWT 7
Luk10 AWT Image und die Skalierung! AWT, Swing, JavaFX & SWT 3
S Bild-Skalierung AWT, Swing, JavaFX & SWT 3
O Skalierung des Center-Bereichs unterbinden AWT, Swing, JavaFX & SWT 2
C Bei Skalierung wird paintComponent() nicht aufgerufen,warum? AWT, Swing, JavaFX & SWT 4
G Performancesteigerung bei Image skalierung AWT, Swing, JavaFX & SWT 3
P ImagIcon Skalierung wirkt sich rückwirkend aus AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben