Skalieren sich javafx objekte automatisch auf die Bildschirmgröße

berserkerdq2

Bekanntes Mitglied
Wenn ich z. B. ein javafx Fenster mit Scenebuilder erstelle und dann vollbild anpasse und das bei mir passt, also z. B. Buttons, Panes etc., wird das auch bei jemanden passen, der einen kleineren Bildschirm hat? Habe ein riesigen Bildschirm.
 
Es ratsam diese in LayoutPanes anzuordnen:

Die folgende Grafik habe ich von hier: https://sopra.cs.tu-dortmund.de/wiki/infos/tutorials/javafx/layoutpanes
1678576684486.png

Weiter ist es manchmal gut, wenn man sich mit einem Thema intensiver befassen will, auch ein entsprechendes Buch zu holen.

Ich habe noch nie mit JavaFX gearbeitet. Aber früher mit Swing und die Konzepte sind ähnlich, wenn nicht gleich.

How ever: Ist JavaFX nicht tod? Es wundert mich, dass hier so viele mit JavaFX unterwegs sind.
 
How ever: Ist JavaFX nicht tod? Es wundert mich, dass hier so viele mit JavaFX unterwegs sind.
Also JavaFX ist nicht tot. Es wird fleißig weiter entwickelt. Aber Java auf dem Desktop ist halt etwas, das wenige machen.

Da neige ich also auch durchaus dazu, von einem roten Pferd zu sprechen. Selbst wenn es große Projekte giibt, die es nutzen.
Swing ist extrem limitiert, kann nicht mal einfache Bindings. Die Library, die das Mal bot, wurde eingestellt … aber IntelliJ nutzt es noch …
Eclipse RCP ist ein Projekt das ich nur als abschreckend empfinden kann. Aber ich denke, dass es auch gar nicht mehr den Anspruch erhebt, dass ein Projekt, das nicht direkt mit der Eclipse IDE zusammen hängt, die nutzt. Sonst gäbe es ja brauchbare Dokumentation. Aber da gibt es ja nur veraltetes Zeug …

JavaFX bietet da noch einiges, wobei man da im Vergleich zu WPF und Co sagen muss, dass vieles fehlt. Bidirektionale Bindings in FXML gibt es nicht (nur als Beispiel). Aber da hat man eine deklarative UI.

Also wenn Desktop mit Java, dann würde ich auf jeden Fall JavaFX nehmen. Aber ich würde, weil alles ‚tote Pferde‘ sind, da nicht aufsteigen 🙂
 
Was ist eigentlich die modernste GUI Umgebung, die man nutzt? Wenn JavaFx und Swing tot ist?
Das Problem ist erst einmal, was man als "tot" bezeichnet. "tote Pferde" (das ist der Begriff, zu dem ich gerne greife) sind Dinge die relativ wenig benutzt werden und wo ich auch keine Tendenz mehr sehe, dass dies mehr wird oder überhaupt mehr werden könnte.

Dann wäre erst einmal die Frage, was man denn überhaupt machen will. Was brauchst Du? Eine Anwendung mit einem User Interface war gefragt aber wir haben noch keine Details, wo es genau laufen soll.

-> Was man da auf jeden Fall zuerst sehen wird, sind die Plattformen selbst. Jeder Hersteller einer Umgebung stellt einen Weg bereit, Software zu erstellen.
Desktops:
  • Windows - hier hat man ein breites Feld. Selbst Microsoft bietet da sehr viel. Aber die Hauptentwicklung hier ist dann halt der .Net Bereich mit WPF und Co. Auf Grund der Entwicklung der letzten Jahre dann .Net MAUI als Multi Platform Lösung, die auch den Desktop mit bedienen kann.
  • macOS: Hier hat Apple Swift im Blick - damit kann man dann schön auf alle Libraries und Frameworks zugreifen, die Apple halt bietet
  • Linux: Hier teilt sich alles massiv auf. Das ist dann der Witz: "Nenne 100 Betriebssysteme" "Linux". Hier hat man diverse Oberflächen, die dann unterschiedliche Frameworks mitbringen und dann entsprechend zu nutzen sind. KDE baut auf QT aber Gnome geht z.B. einen anderen Weg.

Mobil:
  • Android: Hier hat Google den Kotlin Weg mit Android Studi oim Blick
  • iOS: Hier hat Apple seine Swift Umgebung mit vorgesehen

Dann gibt es viele Lösungen, die das übergreifend lösen wollen. Flutter von Google und so. Es gibt da aber viele Wege und u.a. auch einen Java Weg (codename one https://www.codenameone.com/).

Das Problem ist aber immer, dass es problematisch ist, sowas für alle Umgebungen dann auch zu bauen. Man hat halt ein System und das unterstützt in der Regel nicht das bauen für alle Umgebungen. Das kann man dann aber als Service einkaufen bzw. entsprechend aufsetzen (Dann hat man halt eine CI/CD Pipeline mit workern auf diversen Systemen - geht alles!)

Die Lösung, die aus meiner Sicht die größten Chancen für die Zukunft hat, ist schlicht html / css / JavaScript (oder Typescript, das zu JavaScript übersetzt wird). Das bietet vieles ohne wirklich diverse Plattformen berücksichtigen zu müssen. Dank WPA bekommt man auch diese "lokale App" und so. Das ist also schon sehr weitgehend. Und wo das nicht ausreicht, da kommen dann Wrapper Lösungen zum tragen. Beispiele wären hier:
...

Man kann hier also - soweit das nicht schon gut genug vorgesehen ist - auch durchaus auf native Komponenten zugreifen.

Ich sehe hier also für Java Desktop Anwendungen nicht wirklich einen Markt. Und ich scheine da nicht der Einzige zu sein. Wenn man sich anschaut, wie die Entwicklung seit Java 9 verlaufen ist: Da gab es ja die gute Entwicklung von JLink und JPackage und das sieht vielversprechend aus. Aber das Ecosystem hat es auch nach Jahren nicht geschafft, das zu adaptieren. Das Probklem ist dabei nicht technisch begründet sondern schlicht daran, dass zu viele das einfach nicht als notwendig betrachten. Die Enterprise Welt braucht keine Modularisierung und keine App Images. Da hat man seine war Files für Application Server oder die Container für Docker und Co. Und wer das nicht mag, der hat halt ein Java und ruft da alles entsprechend selbst auf.

Das einfach einmal als etwas längere Antwort meine Sichtweise. Aber ganz wichtig: Das ist rein meine Sichtweise und vieles sind einfache Thesen. Ob die Welt so tickt, wie ich es beschrieben habe oder obdie Gründe für einzelne Entwicklungen die sind, die ich unterstelle: Das kann sein oder das kann nicht sein. Ich habe halt auch nur eine sehr begrenzte Sichtweise.
 

Zurück
Oben