Fonction launch() et main() en JavaFx
Fonction launch() et main() en JavaFx
-
Objectifs
-
Introduction :
- En JavaFX, la fonction
launch()
et la méthodemain()
jouent des rôles cruciaux dans le cycle de vie d’une application JavaFX. -
Le Point d’Entrée pour les Applications JavaFX
- En JavaFX, la
méthode main()
démarre le processus d’application en appelant launch(), qui à son tour initialise le runtime JavaFX et appelle lesméthodes init()
,start()
etstop()
dans l’ordre approprié. - La méthode
init()
est utilisée pour toute initialisation précoce,start()
pour configurer et afficher l’interface utilisateur, etstop()
pour effectuer des opérations de nettoyage à la fin de l’application. - Il est important de noter que init() n’est pas appelée sur le même fil d’exécution que le constructeur et start(), ce qui peut avoir des implications pour le code qui dépend du contexte d’exécution.
- En JavaFX, le point d’entrée pour les applications est la classe Application. Lorsqu’une application JavaFX est lancée, elle exécute les actions suivantes dans l’ordre :
- 1- Construit une instance de la classe Application spécifiée :
- Lorsqu’une application JavaFX est lancée, le runtime JavaFX crée une instance de la classe qui étend Application.
- 2- Appelle la méthode init() :
- La
méthode init()
est appelée après la création de l’instance de Application, mais avant que la méthode start() soit appelée. Elle est utile pour toute initialisation qui doit être faite avant que l’interface utilisateur soit affichée. - La
méthode init()
n’est pas appelée sur le même fil d’exécution que le constructeur par défaut et la méthode start(). - 3- Appelle la méthode start(javafx.stage.Stage primaryStage) :
- La
méthode start()
est appelée aprèsinit()
. Elle doit être surchargée dans toute classe qui étend Application et est utilisée pour configurer et afficher l’interface utilisateur principale de l’application. - La
méthode start()
reçoit un objet Stage en argument, qui représente la fenêtre principale de l’application. - 4- Attend l’achèvement de l’application :
- Le runtime JavaFX attend que l’application soit terminée (par exemple, que la fenêtre principale soit fermée par l’utilisateur).
- 5- Appelle la méthode stop() :
- La méthode stop() est appelée lorsque l’application se termine, soit volontairement par un appel à Platform.exit(), soit lorsque la dernière fenêtre de l’application est fermée.
- Cette méthode peut être surchargée pour effectuer des opérations de nettoyage ou sauvegarder l’état de l’application.
- Exécution de la
Méthode init()
, du Constructeur et de laMéthode start()
- L’exécution du code suivant montre que la
méthode init()
n’est pas exécutée par le même fil d’exécution (thread) que le constructeur par défaut et laméthode start()
: - Exemple
- Explication du Code :
Imports :
Classe MyApp :
- Cette classe hérite de Application et définit le comportement de l’application JavaFX.
Constructeur MyApp() :
- Affiche le nom du thread qui exécute le constructeur. En général, le constructeur est appelé par le thread principal de l’application.
Méthode init() :
- Cette méthode est appelée avant start(), et elle est exécutée par le thread de lancement de l’application.
- Utilisée pour effectuer des initialisations avant que l’interface utilisateur soit affichée.
Méthode start(Stage primaryStage) :
- Le point d’entrée principal pour l’interface utilisateur
JavaFX
. - Affiche le nom du thread qui exécute la méthode (ce sera le thread JavaFX Application Thread).
- Configure et affiche la fenêtre principale (primaryStage).
Méthode stop() :
- Cette méthode est appelée lorsque l’application est arrêtée.
- Affiche le nom du thread qui exécute la méthode. Utile pour nettoyer les ressources avant que l’application ne se termine.
Méthode main(String[] args) :
- Le point d’entrée principal de l’application Java.
- Appelle la méthode launch(args) pour démarrer l’application JavaFX. Cette méthode est statique et est définie dans la classe Application.
- Fonctionnement :
- Lorsque l’application est lancée, le constructeur est appelé par le thread principal.
- Ensuite, la méthode
init()
est appelée par le thread de lancement de l’application. - La méthode
start()
est ensuite appelée par le thread de l’application JavaFX pour initialiser et afficher l’interface utilisateur. - Lorsque l’application est arrêtée, la méthode
stop()
est appelée pour effectuer des opérations de nettoyage.
// Importation des classes nécessaires du package JavaFX
import javafx.application.Application;
import javafx.stage.Stage;
// Définition de la classe MyApp qui hérite de Application,
// la classe de base pour les applications JavaFX
public class MyApp extends Application {
// Constructeur de la classe MyApp
public MyApp() {
// Affiche le nom du thread qui exécute le constructeur
System.out.println("Constructor Thread: " + Thread.currentThread().getName());
}
// Méthode init() surchargée, appelée avant la méthode start()
@Override
public void init() {
// Affiche le nom du thread qui exécute la méthode init
System.out.println("init() Thread: " + Thread.currentThread().getName());
}
// Méthode start() surchargée, le point d'entrée de l'interface
// utilisateur de l'application
@Override
public void start(Stage primaryStage) {
// Affiche le nom du thread qui exécute la méthode start
System.out.println("start() Thread: " + Thread.currentThread().getName());
// Configuration du titre de la fenêtre principale
primaryStage.setTitle("Hello JavaFX");
// Affichage de la fenêtre principale
primaryStage.show();
}
// Méthode stop() surchargée, appelée lorsque l'application est arrêtée
@Override
public void stop() {
// Affiche le nom du thread qui exécute la méthode stop
System.out.println("stop() Thread: " + Thread.currentThread().getName());
}
// Méthode main, le point d'entrée principal de l'application
public static void main(String[] args) {
// Lancement de l'application JavaFX
launch(args);
}
}
-
javafx.application.Application: La classe de base pour les applications JavaFX.
javafx.stage.Stage: Représente la fenêtre principale de l’application JavaFX.