Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere?

berserkerdq2

Bekanntes Mitglied
Ich wollte beispielsweise ein Panel, welches ich gefärbt habe oder auch ein Rechteck, was ich gefärbt habe.

Einfach unten mittig an mein Bildschirm tun und das soll sich auch immer wieder in der Mitte positionieren, auch wenn ich meine Bildschirmgröße verändere, habe versucht erstmal mit einem Anchorpanel das zu machen, aber wenn ich das damit mache, also mit Anchor Pane Constraints, bekomme ich das nicht ganz hin?

Bei manchen Varianten, die ich getestet habe, hat sich beim ziehen der Fenstergröße die Länge des Panels bzw. des Rechtecks verändert und bei anderen Varianten, war das Panel dann nicht mehr in der Mitte.

Beispielsweise eine Variante:
1678618288242.png

Hier wollte ich, dass es in der Mitte bleibt, aber wie man sieht, wenn ich die Fenstergröße verändere, ist es nicht mehr in der Mitte.

Bei der anderen Variante:
1678618392708.png

Verändert sich die Größe meines Panels.

Das war die Hierarchy meines Scenebuilders:
1678618429143.png
 
Schau Dir bitte die Layouts im Detail an! Das geht alles ganz einfach über Layouts.

So kannst du die BorderPane nutzen, wenn Du etwas in der Mitte des Bildschirms haben willst und du halt andere Dinge drumherum anordnen möchtest.

Wenn Du etwas in der Mitte halten willst, dann wäre vermutlich die StackPane richtig. Da kann man dann ein Alignment setzen.

Also da wirklich anschauen, was es da alles gibt und was für Möglichkeiten diese Elemente bieten! Dazu gibt es auch extrem viele Webseiten! Wenn man sich da etwas auskennt, dann bastelt man sich UIs sehr schnell einfach so zusammen indem man unterschiedliche Container verschachtelt.

Aber alternativ kannst Du auch jederzeit sowas selbst entwickeln: Einfach einen Listener auf die Properties von height und width des Parent Elements setzen, dass dann die Größe nimmt und dann das Objekt hart setzt. Bei höhe hp und Breite wp des Parents und höhe hc und breitw wc der component, ist der Punkt, an dem das Element plaziert werden muss ja: (wp-wc)/2, (hp - hc)/2.
Das ist also in Java auch einfach umzusetzen. Aber noch einmal ganz deutlich: Sowas zu programmieren ist unnötig, da es dazu fertige Container gibt, die sowas ohne jeden Code abbilden können!
 
Schau Dir bitte die Layouts im Detail an! Das geht alles ganz einfach über Layouts.

So kannst du die BorderPane nutzen, wenn Du etwas in der Mitte des Bildschirms haben willst und du halt andere Dinge drumherum anordnen möchtest.

Wenn Du etwas in der Mitte halten willst, dann wäre vermutlich die StackPane richtig. Da kann man dann ein Alignment setzen.

Also da wirklich anschauen, was es da alles gibt und was für Möglichkeiten diese Elemente bieten! Dazu gibt es auch extrem viele Webseiten! Wenn man sich da etwas auskennt, dann bastelt man sich UIs sehr schnell einfach so zusammen indem man unterschiedliche Container verschachtelt.

Aber alternativ kannst Du auch jederzeit sowas selbst entwickeln: Einfach einen Listener auf die Properties von height und width des Parent Elements setzen, dass dann die Größe nimmt und dann das Objekt hart setzt. Bei höhe hp und Breite wp des Parents und höhe hc und breitw wc der component, ist der Punkt, an dem das Element plaziert werden muss ja: (wp-wc)/2, (hp - hc)/2.
Das ist also in Java auch einfach umzusetzen. Aber noch einmal ganz deutlich: Sowas zu programmieren ist unnötig, da es dazu fertige Container gibt, die sowas ohne jeden Code abbilden können!
Danke, die Sache ich verwende von Beginn an ein Anchorpane, weil ich ein anderes Pantel unten links in der Ecke halten muss, auch bei Fenstergrößen Veränderungen und ein anderes Panel unten rechts, das geht auch mit dem Anchorpane, als Ergänzung sollte nun das Panel in der Mitte kommen.

Wenn ich das mit einem Borderpane machen würde, hätte ich ja Probleme ein Objekte unten rechts und eins unten links zu halten, das geht ja nur mit dem Anchorpane, wenn ich die Anchor Pane Constraints setze oder?

Also mit dem Borderpane könne ich wahrscheinlich ein Objekt unten in der Mitte halten, aber hätte Probleme die anderen beiden Panels jeweils in der jeweiligen Ecke zu halten?

Außerdem hatte ich beim Borderpane das Problem, dass das Panel, welches ich mittig halten wollte, zu groß war, wenn ich ein Borderpane nutze und dann unten, also beim Bottom des BorderPane ein Panel einfüge, wird das automatisch so lang gezogen wie der Bottom des Borderpanes.

Also das Endziel soll sein:

1678620189300.png

Und alle 3 Panes sollen sich nicht von der Größe verändern und immer ihre Position beibehalten, bei dem lblauen und gelben kein Problem, nur das rote macht mir zu schaffen.
 
Du kannst ein StackPane haben und da dann Alignments setzen. Das blaue soll halt unten links (Pos.BOTTOM_LEFT) sein, das rote unten mitte (Pos.BOTTOM_CENTER) und das gelbe unten rechts (Pos.BOTTOM_RIGHT).

Das wäre der erste Versuch, den ich machen würde (Ich habe da halt auch nicht groß Erfahrungen mit - Sowas habe ich mir nur mal kurz angesehen aber Java Desktopanwendungen waren in der Praxis nie relevant für mich). Die Elemente sollten nicht in der Größe verändert werden. Maximal, wenn es nicht mehr passen sollte. Dann muss man halt schauen, wie man sowas lösen könnte. Da wären dann aber die genauen Anforderungen wichtig.
 

Zurück
Oben