Maison >Java >javaDidacticiel >Comment démarrer une application JavaFX autonome à partir d'une autre instance au sein du même package ?
Démarrer une application autonome à partir d'une autre application, même lorsque les deux applications appartiennent au même package, peut sembler simple mais peut être difficile à mettre en œuvre correctement. Pour commencer, un examen approfondi du problème est nécessaire.
Le problème survient lorsque l'on tente d'utiliser la méthode launch() d'une sous-classe Application à partir d'une autre sous-classe Application. Cette approche déclenche une erreur car la méthode launch() est destinée à lancer l'ensemble de l'application et ne doit pas être invoquée plus d'une fois.
Pour éviter cette erreur, il est crucial de reconnaître qu'une sous-classe Application représente une sous-classe complète. application exécutée au sein de la machine virtuelle Java (JVM). Par conséquent, il ne doit être instancié qu’une seule fois par JVM pour chaque application distincte. Tout code réutilisable doit être déplacé vers une classe distincte en dehors de la sous-classe Application.
Refactoring pour les composants réutilisables
Au lieu d'utiliser les sous-classes Application, une approche plus flexible consiste à employer des cours réguliers pour les composants individuels. Ces classes peuvent ensuite être instanciées et utilisées selon les besoins, permettant la création d'applications autonomes ou l'intégration dans des applications plus grandes.
public class FirstModule { private BorderPane view; public FirstModule() { view = new BorderPane(); // ... } public Parent getView() { return view; } }
public class CompositeModule { private HBox view; public CompositeModule() { // ... } public Parent getView() { return view; } }
Intégration dans des applications autonomes
Pour créer des applications indépendantes, instanciez les modules requis au sein d'une Application sous-classe.
public class FirstApplication extends Application { @Override public void start(Stage primaryStage) { Scene scene = new Scene(new FirstModule().getView()); // ... } }
Intégration dans des applications plus grandes
Pour inclure ces modules dans des applications plus grandes, créez une classe qui les combine.
public class CompositeApplication extends Application { @Override public void start(Stage primaryStage) { Scene scene = new Scene(new CompositeModule().getView()); // ... } }
Conclusion
Cette technique offre une plus grande flexibilité et permet le développement de composants réutilisables, qui peuvent être utilisé dans diverses applications autonomes ou intégré dans des applications plus étendues. Cette restructuration s'aligne également sur la conception prévue de l'architecture JavaFX MVC, séparant la logique de l'application des composants de l'interface utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!