JavaFX - Binding & Co

Diskutiere JavaFX - Binding & Co im AWT, Swing, JavaFX & SWT Bereich.
J

JustNobody

Schreib mir dann auch ruhig Feedback. Was müsste besser gemacht werden? Natürlich auch gerne, was gefällt.

Ich habe ja auch etwas zur aktuellen Planung geschrieben - derzeit ist eine Beispiel-App dran, in der man alles etwas mehr im Zusammenhang sieht. Das fehlt aus meiner Sicht bei den ganz kleinen Beispielen immer ... Aber ich kann auch immer gerne etwas anderes vorziehen oder auch den ganzen Plan über den Haufen werfen wenn notwendig.

Ist halt nicht wirklich eine detaillierte Beschreibung z.B. von MVC sondern nur ein Beispiel, wie ich es sehe ...
 
B

Bela B.

Bisher schaut dein Plan gut aus, was mir auch bei den bisherigen Beispielen bei mvvmFX fehlt, ist die Erklärung dazu. Bei den Projekten, bei denen dann eine Erklärung dabei ist, ist das Model so verdammt simpel und/oder mit Properties gemacht.

Ich würde mir wünschen, wenn du eine Vorstellung von mvvmFX mit richtiger* Aufteilung nach MVVM-Pattern zeigst, das auf ein komplizierteres Model mit "normalen" Java Datentypen zugreift.

Edit:
Und was mir bisher auch noch nicht so klar ist, welche guten Erweiterungsmodule es für JavaFX alles gibt.

(*: mir ist klar, dass die Aufteilung für jeden Programmierer anders für richtig empfunden wird)
 
J

JustNobody

Ja, dann wird das, was als nächstes kommt, bestimmt interessant. Da gibt es dann als Beispiel eine Adressverwaltung.
Den Backend-Bereich halte ich natürlich simpel, also keinerlei Laden/Speichern und so, d.h. die Applikation startet mit einer leeren Liste und dann kann man einfache Adressen anlegen, editieren und so weiter.... Aber das its ja ein Bereich, den ich nicht weiter abdecken möchte. Wichtig ist halt für mich, dass es hier einfache Entities gibt: Address, das eine Adresse halten kann und AddressList und eine Reihe von Adressen.

Dabei hat AddressList halt Methoden, wie man sie z.B. bei einem DataLayer finden könnte a.la. findById, findByName, save, delete ...

Das ist halt absichtlich einfach gehalten. Es geht mit halt um:
- den Aufbau mit ViewModel und View.
- erste einfache Gestaltungsmöglichkeiten

Bezüglich Erweiterungen: Was interessiert Dich da besonders? Derzeit will ich nur auf FormsFX eingehen und mich dann etwas den Multi-Plattform Lösungen mit JavaFX zuwenden.
Es gibt aber natürlich einiges mehr wenn man z.B. auf https://openjfx.io/ unter Community schaut.
 
B

Bela B.

Das ist halt absichtlich einfach gehalten. Es geht mit halt um:
- den Aufbau mit ViewModel und View.
- erste einfache Gestaltungsmöglichkeiten
Ja damit meine ich jetzt auch nicht ein Mords kompliziertes Model, aber bei den meisten Beispielen besteht es nur aus einer Klasse, die sich im Model befindet. In echten Applikationen ist das dann ja doch meist etwas mehr aufgebläht und besser getrennt.

So habe ich z.B. in meiner aktuellen Anwendung mehrere DataLayers die über das Repository-Pattern dem Model einige Methoden anbieten, um diese dann letztendlich zueinander zu vergleichen.

Bezüglich Erweiterungen: Was interessiert Dich da besonders?
Hauptsächlich neben den von dir eh schon geplanten FormsFX die ControlsFX.

Ich will dir damit jetzt nicht zu viel aufhalsen, aber was auch noch mehr als interessant wäre:
TDD mit mvvmFX anhand der Adressverwaltung?

Hoffe, ich gehe dir damit jetzt nur zu sehr auf den S* 😬
 
L

lam_tr

Ich habe das hier nur überflogen, aber vielleicht kannst du aus diesem Projekt ja etwas Hilfreiches mitnehmen. Falls nicht, so sei es ungeschrieben...
Hallo zusammen,

ich habe das Framework mal angeschaut und bin da leider nicht schlau geworden was man da so wirklich gewinnen kann. Vielleicht denke ich auch zu einfach oder habe es komplett nicht verstanden. Aber eine Aufklärung wäre schon cool :)

Grüße
lam
 
L

lam_tr

Bisher schaut dein Plan gut aus, was mir auch bei den bisherigen Beispielen bei mvvmFX fehlt, ist die Erklärung dazu. Bei den Projekten, bei denen dann eine Erklärung dabei ist, ist das Model so verdammt simpel und/oder mit Properties gemacht.

Ich würde mir wünschen, wenn du eine Vorstellung von mvvmFX mit richtiger* Aufteilung nach MVVM-Pattern zeigst, das auf ein komplizierteres Model mit "normalen" Java Datentypen zugreift.

Edit:
Und was mir bisher auch noch nicht so klar ist, welche guten Erweiterungsmodule es für JavaFX alles gibt.

(*: mir ist klar, dass die Aufteilung für jeden Programmierer anders für richtig empfunden wird)
@Bela B.
was meinst du da mit Erweiterungsmodule?

Kann man dich hiermit zufrieden stellen https://github.com/mhrimaz/AwesomeJavaFX es wird fortlaufen geupdatet.
 
looparda

looparda

So wie ich dieses mvvmFX verstehe, hat man da dann im Java Part der View den Code mit den Bindings. Statt also alles in einer fxml Datei zu halten (Die dann nicht mehr mit Tools wie SceneBuilder bearbeitet werden kann), wurden die notwendigen Teile in den "Controller" verschoben, der nun Part der View ist (und auch als View bezeichnet wird).
Ich bezeichne diesen Part gern als (View)Controller. Die einzige Zuständigkeit ist das Setzen der Bindings zwischen View und ViewModel und ggf. das kontrollieren aufwändiger Animationen, die nicht einzig in der View definiert werden können. Außerdem werden hier die Actions für Button gesetzt, welche an die angebotenen Commands des ViewModels delegieren.

Vielleicht denke ich auch zu einfach oder habe es komplett nicht verstanden. Aber eine Aufklärung wäre schon cool
Das ViewModel hat keine Verbindung zur View und ist somit ohne GUI testbar. Du kannst mehrere Views mit einem ViewModel verbinden.
 
J

JustNobody

Hallo zusammen,

ich habe das Framework mal angeschaut und bin da leider nicht schlau geworden was man da so wirklich gewinnen kann. Vielleicht denke ich auch zu einfach oder habe es komplett nicht verstanden. Aber eine Aufklärung wäre schon cool :)

Grüße
lam
So wie es schon angeklungen ist: Es geht zum einen darum, dass du möglichst viel mit Unit-Tests testen kannst. Dazu brauchst Du möglichst sauber Abhängigkeiten. Was mich immer wieder massiv stört ist Code, in dem die Abhängigkeiten wild durcheinander gehen. Da hast man dann einen JavaFX Controller, der natürlich massiv abhängig ist zum fxml (weil da ja dann Controls mit fx:id klar so sein müssen). Und dann oft auch noch Business-Logik, die in den Controller wandert (statt in einem Model zu sein) us.w.

Zum anderen sehe ich aber auch Probleme mit der Entwicklung zwischen mehreren Entwicklern. Ich möchte die reine Programierung machen, d.h. am Ende kommen Dinge dabei raus, wie:
- Ich stelle Daten zur Verfügung. (Mit den entsprechenden Pattern wie Observable und so)
- Ich stelle Aktionen zur Verfügung.

Die, die die GUI bauen, können Ihre GUI direkt bauen indem sie einfach das, was ich später anbiete, modellieren (a.la. Mocking). Sie sind auch komplett frei in Ihrer Wahl von Controls und so. Es ist egal, ob etwas nun ein Button ist oder ein KonradsGeilerKnopf oder einfach ein Label auf den man klicken oder oder oder oder .... Das kommt in meinem Code schlicht nicht vor. Das interessiert mich auch nicht.

Das ist dann auch das, was ich etwas in meinem Blog zu JavaFX MVC darstellen wollte. Führte aber dann dazu, dass auf Grund der Unzulänglichkeiten von fxml eben doch Code notwendig wird ...

Das MVVM Pattern ist ähnlich nur eben sind da die Dinge leicht abgewandelt.

Die View ist (kann) zweiteilig (sein). Du hast das fxml (optional) und ein Java File. Das ist in etwa die View wie beim MVC, nur eben hast Du da den Code sauber in dem "Codebehind" File.
Das ViewModel entspricht dem Model bei MVC. Denn streng genommen war das ja immer ein künstliches Model, denn man musste die Daten ja in entsprechenden Klassen bereit stellen, z.B. die Property oder Oberservable Klassen. Das heisst man hatte zum einen seine Entities, DAL und Co und dann das JavaFX Model.... Nun heisst das JavaFX Model halt ViewModel und Model ist das Model der Applikation, das nun unabhängig von JavaFX ist.

Das sieht für mich relativ gut und brauchbar aus. Die Frage ist nur, was es evtl. noch an Nachteilen gibt. Aber schlecht als die Laufzeit bei den JavaScript Anteilen bei meinem MVC Ansatz kann es eigentlich nicht sein. :)
 
Thema: 

JavaFX - Binding & Co

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben