Guten Tag zusammen,
ich benötige wieder eure Fachmänniche Hilfe.
Heute hätte ich eine Frage zu der JavaFX Oberfläche. Wie ich die so anpassen kann, das die GUI sich an jede Auflösung automatisch anpasst.
Zur GUI:
Die GUI ist auf Pane aufgebaut. Darin enthalten sind noch Labels, ein Bild (oben Rechts als Logo) und noch eine weiteres Pane (pane2).
In der Pane2 sind ebenfalls Labels enthalten. Mehr ist auf der GUI nicht drauf. Also nur 2x Pane, 1x Bild und ein paar Labels.
Jetzt hat die GUI eine Standardmäßige Größe von 1911x1077.
Die GUI wird immer im Fullscreen angezeigt.
Problem:
Wenn die Bildschirmauflösung kleiner ist, dann fehlt die Hälfte von der Oberfläche.
Ich hab hier im Forum schon gesehen das bereits andere ein ähnliches Problem hatten.
Ein Lösungsansatz war es mit einer GridPane zu lösen, was bei mir leider nicht funktioniert hat.
Da die Labels während des Programmablaufs gefüllt werden und ich nicht genau sagen kann wie viel da rein kommt. Bei dem GridPane haben die sich dann nach oben aufgefüllt und sind teilweise auch überlappt. Entweder war ich zu doof dafür das richtig zu machen oder es passt halt wirklich nicht für meinen Anwendungszweck.
Mein Lösungsansatz:
Jetzt hab ich aber schon eine Idee wie man das ganze lösen könnte. Dazu würd ich aber gerne eure Meinung hören, ob das überhaupt Sinn macht.
Ich weiß ja das die optimale Auflösung 1911x1077 ist und das das Bild oben rechts in dem Fall Position x = 1218 und y = 72 hat.
Wenn ich jetzt eine Auflösung von z.B. 1366x768 habe könnte ich doch theoretisch die Position von dem Bild oben rechst neu ermitteln oder?
Dazu würd ich folgende Rechnung machen:
Beispiel für das Bild oben rechts auf der GUI:
Optimale Bildschirmauflösung - aktuelle Bildschirmauflösung = Positionsverschiebung
1911 - 1366 = 545
Aktuelle X Position von Image - Positionsverschiebung = neue X Position von Image
1218 - 545 = 671
Die neue errechnte X Positon würde ich dann am Anfang des Programmstartes setzen und das dann für alle Objekte auf der GUI durchziehen. Für jedes dann die entsprechende Rechnung ausführen. Die aktuelle Bildschirmauflösung bekomme ich über die Scene heraus, da diese immer im Vollbild Modus gestartet werden soll.
Wenn jemand eine smartere Lösung hat, würde ich mich freuen, wenn er diese mit mir teilt.
ich benötige wieder eure Fachmänniche Hilfe.
Heute hätte ich eine Frage zu der JavaFX Oberfläche. Wie ich die so anpassen kann, das die GUI sich an jede Auflösung automatisch anpasst.
Zur GUI:
Die GUI ist auf Pane aufgebaut. Darin enthalten sind noch Labels, ein Bild (oben Rechts als Logo) und noch eine weiteres Pane (pane2).
In der Pane2 sind ebenfalls Labels enthalten. Mehr ist auf der GUI nicht drauf. Also nur 2x Pane, 1x Bild und ein paar Labels.
Jetzt hat die GUI eine Standardmäßige Größe von 1911x1077.
Die GUI wird immer im Fullscreen angezeigt.
Problem:
Wenn die Bildschirmauflösung kleiner ist, dann fehlt die Hälfte von der Oberfläche.
Ich hab hier im Forum schon gesehen das bereits andere ein ähnliches Problem hatten.
Ein Lösungsansatz war es mit einer GridPane zu lösen, was bei mir leider nicht funktioniert hat.
Da die Labels während des Programmablaufs gefüllt werden und ich nicht genau sagen kann wie viel da rein kommt. Bei dem GridPane haben die sich dann nach oben aufgefüllt und sind teilweise auch überlappt. Entweder war ich zu doof dafür das richtig zu machen oder es passt halt wirklich nicht für meinen Anwendungszweck.
Mein Lösungsansatz:
Jetzt hab ich aber schon eine Idee wie man das ganze lösen könnte. Dazu würd ich aber gerne eure Meinung hören, ob das überhaupt Sinn macht.
Ich weiß ja das die optimale Auflösung 1911x1077 ist und das das Bild oben rechts in dem Fall Position x = 1218 und y = 72 hat.
Wenn ich jetzt eine Auflösung von z.B. 1366x768 habe könnte ich doch theoretisch die Position von dem Bild oben rechst neu ermitteln oder?
Dazu würd ich folgende Rechnung machen:
Beispiel für das Bild oben rechts auf der GUI:
Optimale Bildschirmauflösung - aktuelle Bildschirmauflösung = Positionsverschiebung
1911 - 1366 = 545
Aktuelle X Position von Image - Positionsverschiebung = neue X Position von Image
1218 - 545 = 671
Die neue errechnte X Positon würde ich dann am Anfang des Programmstartes setzen und das dann für alle Objekte auf der GUI durchziehen. Für jedes dann die entsprechende Rechnung ausführen. Die aktuelle Bildschirmauflösung bekomme ich über die Scene heraus, da diese immer im Vollbild Modus gestartet werden soll.
Wenn jemand eine smartere Lösung hat, würde ich mich freuen, wenn er diese mit mir teilt.