it-swarm.com.de

MVC mit JavaFX

Ich habe Probleme mit dem MVC-Konzept mit JavaFX. Ich baue eine JavaFX-Anwendung mit fxml-Dateien.

Jeder fxml-Datei ist ein Controller zugewiesen, aber ich denke nicht, dass dieser Controller einer der MVC-Musterzustände ist. Ich denke an eine Art ViewController, der Verweise auf fxml-Objekte (Schaltflächen, Fenster usw.) enthält.

Mein Problem ist: Wo genau ist der Unterschied zwischen diesem "ViewController" und dem echten "Controller". Welches Objekt soll was machen? Wo stelle ich z. actionListeners? 

20
priojewo

Gedanken zu MVC

MVC ist ein ziemlich lose definiertes Muster, das für (oft etwas vage) Interpretationen dessen offen ist, wofür die einzelnen Dinge in MVC stehen (insbesondere der Controller). In Bezug auf GUI-Toolkits von Martin Fowler gibt es eine großartige Diskussion der MVC-Architektur .

On Design Patterns und FXML

Die Verarbeitung von FXML auf JavaFX-Basis ist eher ein Toolkit als ein komplettes Entwicklungsframework. Die Idee war, dass andere Frameworks auf JavaFX und FXML aufgeschichtet werden könnten und die zugrunde liegenden JavaFX/FXML-Implementierungen und die Controller für sie nicht irgendeine Art von Agenda oder architektonischen Einschränkungen in die Frameworks auf höherer Ebene bringen würden. 

Infolgedessen gibt es eine bewusst lose Analogie und Abbildung der FXML-basierten Kernverarbeitung und ihrer Controller auf eine MVC-Architektur. 

Weitere Informationen finden Sie unter JavaFX und MVP - ein Smörgåsbord von Entwurfsmustern .

Erwägen Sie die Verwendung eines übergeordneten Frameworks.

Sie könnten von der Einführung eines "opinionated" JavaFX-Frameworks wie afterburner.fx profitieren, das Controller und FXML verwendet, jedoch ein etwas mehr strukturiertes Framework bietet. Afterburner.fx folgt einem Model View Presenter (MVP) Modell . Obwohl Afterburner.fx mehr Funktionalität und Struktur bietet als einfaches JavaFX + FXML, tut es dies auf minimale Weise, indem es einige zusätzliche Klassen und APIs hinzufügt, die Sie lernen müssen, um es anzuwenden.

17
jewelsea

Sie können JRebirth mit seinem benutzerdefinierten Muster ausprobieren: WB-CS-Mvc

Dies ist ein MVC-Muster mit 2 Ebenen, die erste MVC (Anwendungsebene) ist CSM und die zweite ist Mvc selbst (UI-Ebene).

  • Wave für Messaging und asynchrone interne Ereignisbehandlung 
  • Verhalten zum Hinzufügen von allgemeinem Code zu einer Komponente (C | S | M) 
  • Befehl zum Verwalten von Anwendungsbefehlen (wiederverwendbarer Code) 
  • Dienst, der einige lange Dienste im Thread-Pool abwickelt 
  • Modell zum Verwalten des Modells Ihrer Benutzeroberfläche 
  • Zeigen Sie an, um Ihre Benutzeroberfläche zu erstellen 
  • Controller zum Verwalten von Benutzerereignissen

Sie können die JRebirth Tour-Anwendung ausführen, um mehr zu erfahren (Java 8 erforderlich):

http://apps.jrebirth.org/jaf/3.0.0/JRebirthTour-3.0.0.jar

Java -jar JRebirthTour-3.0.0.jar

Sie können auch die Demo-Anwendung ausführen:

http://apps.jrebirth.org/demo/8.5.0/JRebirthDemo-8.5.0.jar

Java -jar JRebirthDemo-8.5.0.jar

oder durchsuchen Sie die Folien (etwas veraltet): http://fr.slideshare.net/SbastienBordes/javafx-unleashed-with-jrebirth-application-framework

1
Sébastien B.