Java GUI - schnell zum Ziel: mit Swing oder JavaFX?

01/22/2019 10:24 cypher#1
Hallo,

ich habe noch nie in Java eine GUI programmiert, muss es dieses mal aber für eine Anwendung mache. Wie komme ich möglichst schnell zum Ziel?
Mit Swing oder JavaFX? Was ist einfacher und effizienter umzusetzen?

Meine Anforderungen sind folgende:
- Benutzer kann Eingaben tätigen, um Objekte für versch. Listen (die dann in einer Table angezeigt werden) zu erstellen
- Es soll ein Graph & ein Kreisdiagramm angezeigt werden
- Es gibt ein paar Variablen, die sich stetig verändern, d.h. die Listeneinträge und Grafiken (Graph, Diagramm etc.) sollen sich an die Werte anpassen

Ein Tipp + ein paar Links zu Resourcen wäre sehr nett.
Würde mich freuen, wenn mir jemand in eine Richtung zeigen könnte, bin gerade wild Tutorials am gucken. JavaFX sieht zwar schick aus, aber ich würde das dann höchstwahrscheinlich ohne den Scene Builder machen. Gefällt mir nicht.

MfG
Cyphernomic
01/23/2019 09:55 Zunft#2
Quote:
Originally Posted by Cyphernomic View Post
Edit: Habe mich entschieden, doch ein Konsolenprogramm zu machen. GUIs sind für Noobs xD
Na toll, jetzt wo ich gerade antworten wollte...
01/23/2019 09:57 cypher#3
Quote:
Originally Posted by Zunft View Post
Na toll, jetzt wo ich gerade antworten wollte...
Hey, darfst mir gerne trotzdem antworten. Bin zwar gerade dabei das ganze als Konsolenanwendung umzusetzen, aber eine GUI würde ich trotzdem irgendwann draus machen. Geht mir momentan nur darum, dass es erstmal einsatzfähig ist. Das Programm ist nur für mich selber. Muss also nicht wirklich toll aussehen.

Hab zwar den Beitrag editiert, aber die Frage hieß es ungefähr so:
Womit komme ich schneller ans Ziel? Mit Swing oder JavaFX?
Könnt ihr mir auch bestimmte Resourcen empfehlen?
Anforderungen sind folgende:
- User soll per Eingabe Objekte erstellen können, die dann in Listen eingetragen werden
- Listen haben Einträge, die durch bestimmte Variablen bestimmt werden. Die Variablen werden stetig updated, d.h. die Einträge sollen dementsprechend auch ein Update kriegen
- o.g. Listen werden in Tables dem Benutzer angezeigt
- Je nach dem welches Objekt der User wählt (Dropdown list), wird eine andere Liste angezeigt
- Es sollen auch Grafiken angezeigt werden, wie zB. ein Graph sowie ein Kreisdiagramm (diese hängen von den Listeneinträgen ab)
01/23/2019 10:31 Zunft#4
Quote:
Originally Posted by Cyphernomic View Post
Hey, darfst mir gerne trotzdem antworten. Bin zwar grad dabei das ganze als Konsolenanwendung umzusetzen, aber eine GUI würde ich trotzdem irgendwann draus machen. Geht mir momentan nur darum, dass es erstmal einsatzfähig ist. Das Programm ist nur für mich selber, nicht für einen Kunden oder so.
Naja ich habe deine Anforderungen nicht mehr auf dem Schirm, kann also nicht darauf eingehen aber ich versuche mal einfach so meine Gedanken zu Swing vs. JavaFX zu beschreiben.

Swing wird mittlerweile von JavaFX abgelöst. JavaFX ist zwar noch nicht Java Standard aber wird es wohl mit der Zeit werden. Dementsprechend bietet JavaFX natürlich viele Vorteile gegenüber Swing, was allerdings nicht heißt, dass man mit Swing nicht tolle UIs einfach basteln kann. Grundsätzlich haben beide Frameworks immer noch ihren Charme.
Ein großer Kritikpunkt an Swing ist die "unmoderne" Oberfläche. Dem gebe ich auch recht, wenn man die UI Out-of-the-Box designt, sieht es schon veraltet und hässlich gegenüber JavaFX aus. Aber man kann auch Swing-Oberflächen zu echten Schönheiten designen:


Nichts destotrotz, wie schon gesagt wird Swing mit und mit von JavaFX abgelöst. Ich würde daher auch jedem Empfehlen direkt mit JavaFX zu arbeiten. Und man kann schöne UIs in JavaFX relativ simpel aus dem Hut zaubern.

Ein riesiger Vorteil von JavaFX gegenüber Swing sind die Factorys. Ich kann für jedes Designelement bzw. sogar für die Elemente in den tieferen Ebenen Verhaltensweisen festlegen. So ist die UI nahezu komplett individualisierbar und bietet fast unzählige Gestaltungsmöglichkeiten.
Mit Hilfe dieser Factorys lassen sich auch Objekte in Nodes darstellen. Nehmen wir zum Beispiel eine Tabelle, die alle Objekte der Klasse "Land" darstellen soll.
Dazu weißen wir jeder Tabellenspalte eine Property aus der Klasse "Land" zu, passen ggf. noch an, dass die Flagge nicht als Text, sondern als Image dargestellt werden soll, setzen die Tabellenwerte und zack ist die Tabelle fertig.

[Only registered and activated users can see links. Click Here To Register...]

Desweiteren ist die JavaFX Oberfläche mittels CSS komplett gestaltbar, es lassen sich also leicht verschiedene, teilweise recht umfangreiche Stylesheets erstellen.

Aber genug zu den Vorteilen, du wolltest ja wissen wie man schneller ans Ziel gelangt. Das lässt sich pauschal nicht sagen. Ich für meinen Teil bräuchte vermutlich mit Swing länger als mit JavaFX, weil ich seit 2014 nur mit JavaFX arbeite und Swing schon ewig nicht mehr angefasst habe. Wenn du Erfahrung mit Swing hast, bist du vermutlich damit schneller am Ziel. Wenn du etwas neues lernst, kommt es aufs gleiche Hinaus.
Hängt also von dir ab, womit du schneller am Ziel bist.

Naja wie auch immer.

Solltest du dich für JavaFX entscheiden sind hier ein paar nützliche Tools und Erweiterungen:

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

*Edit:

Quote:
Originally Posted by Cyphernomic View Post
- Listen haben Einträge, die durch bestimmte Variablen bestimmt werden. Die Variablen werden stetig updated, d.h. die Einträge sollen dementsprechend auch ein Update kriegen
- o.g. Listen werden in Tables dem Benutzer angezeigt
- Es sollen auch Grafiken angezeigt werden, wie zB. ein Graph sowie ein Kreisdiagramm (diese hängen von den Listeneinträgen ab)
Diese Punkte sprechen für JavaFX. Das ist wesentlich leichter damit zu erreichen.