JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing?

I.E.

Mitglied
Bei Swing erstelle ich eine Panel, sie hat standardmäßig den FlowLayout, ich kann allerdings ein neues Layout erstellen und die Panel mit diesem Layout verknüpfen. Wenn ich dann der Panel Inhalte übergeben will, sage ich Panel.add(Inhalt);.

Bei JAVAFX erstelle ich eine Scene und einen Layout, beide werden verknüpft, und wenn ich dann Inhalte auf die Scene setzen will, muss ich sie ihrem Layout übergeben. Ihrem Layout, und nicht der Panel selbst!!!
vBox.getChildren().add(Inhalt);.

Was ist der Vorteil bei dieser Vorgehensweise? Bei Swing fand ich den Aspekt mit den Layouts wesentlich logischer. Eine Panel bekommt doch den Inhalt. Ich habe ein konkretes Objekt und behalte es dann ebendieses im Auge. Einmal den Layout festgesetzt und gut ist. Bei JAVAFX muss ich bei neuen Inhalten, die dazu kommen, noch die Variable für den Layout auf dem Schirm behalten.

Das einzige, was vorteilhaft ist, ist die varargs-Technik, so dass man mehrere Inhalte mit einem Schlag übergeben kann. Sowas kann man aber in einem SWING-Projekt ganz schnell programmieren.

Es heißt immer wieder, JAVAFX würde das Aufbauen einer GUI erheblich erleichtern, laut dem aber, was ich bislang gesehen habe, bin ich nicht sonderlich begeistert. Ein Beispiel habe ich gerade genannt. Ist meine Skepsis berechtigt?
 
Also Scene ist gleichzusetzen mit JFrame.
JPanel ist ja nichts anderes als ein Container für weitere Elemente. JPanel selbst hat aber kein Layout (natürlich wird implizit, wie du schon gesagt hast ein FlowLayout übergeben). Für eine Grafikkomponente, weiß sie dann doch wenig, wie die Kindelemente gezeichnet werden sollen, oder nicht? Also ein JPanel nichts anderes als eine Collection, die weitere JComponent Elemente enthält.

Das ändert sich mit JavaFX. Eine Pane (egal welche, z.B. BorderPane) weiß genau wie die Kindelemente gezeichnet werden sollen und wie oft ändert sich das Layout dynamisch während dem Betrieb? Zu 99,9% gar nicht.

Swing und JavaFX kann man fast nicht vergleichen. Sie haben nur gemein, dass sie zur UI Programmierung erstellt worden sind, aber mehr schon nicht. FX bietet leichteres UI update, ist noch leichtgewichtiger und reduziert so manchen Boilerplatecode durch automatische Propagierung (i.e. Properties).

UI kann in beiden Frameworks gleich schnell zusammengeklickt werden.
FX bietet eben schon eine Art MVVM Pattern an und eine deklarative Schiene der UI. FX lässt sich leichter durchstylen und sieht auch "moderner" mMn aus.

Welches Framework du nutzt ist eben Geschmackssache und deine Skepsis ist etwas unbegründet.
 
Danke Flown,

ich habe kurz nach dem Verfassen der Frage selbst gemerkt, dass Scene ein JFrame-Äquivalent ist, und eine Pane/StackPane/VBox etc. einer JPanel mit einem bestimmten Layout entsprechen. Also nicht dem Layout selbst, wie ich es anfangs annahm, sondern gleich der Container samt Layout. Was natürlich ziemlich bequem ist, die Skepsis war also tatsächlich unbegründet!

Ich finde, meine Frage ist letztendlich ziemlich überflüssig gewesen, da ich sie nach kurzem Herumdoktern selbst gelöst habe.
 

Neue Themen


Zurück
Oben