Sono nuovo di JavaFX e sto cercando di creare un'architettura MVC corretta data la mia configurazione corrente. Ho fatto clic su un'interfaccia utente utilizzando Scene Builder e ho designato una classe Controller.Pattern MVC in JavaFX con Scene Builder
Startup:
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
}
}
E la classe controller contiene il resto del codice.
public class AccommodationPortalView implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resources) {
// Work here.
}
}
Il mio professore mi ha chiesto di separare ulteriormente le preoccupazioni e le responsabilità di questa applicazione. Il controller non sta solo gestendo lo stato e parlando con il back-end, ma sta anche aggiornando la vista.
La mia prima risposta è stata far diventare la classe Controller la View e creare altre due classi per Controller e Model.
Tuttavia, sono in perdita su come collegare questi pezzi. Non ho mai bisogno di creare un'istanza della vista, quindi non esiste un'istanza View che possa essere trasmessa al mio controller, ad esempio. Successivamente, ho provato a renderli tutti singleton e semplicemente a farli trasferire da Controller in fase di runtime, ma questo mi dà un errore.
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
// Controller gets a View and Model instance in initialize();
// Error: Instantiation and Runtime Exception...
PortalController.INSTANCE.initialize();
}
}
Come configurare correttamente un pattern MVC utilizzando la configurazione corrente? È richiesta un'architettura diversa?
Ciao! Grazie per la risposta, il link è stato anche un'ottima risorsa! Ho accesso al controller e- oh! Penso di capirlo adesso. Questa è un'architettura molto diversa da quella a cui sono abituata. Grazie mille per avermi aiutato :) – IAE