IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

code fonctionnel mais obscur, explication possible? SVP


Sujet :

JavaFX

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Points : 34
    Points
    34
    Par défaut code fonctionnel mais obscur, explication possible? SVP
    Bonsoir a tous et toutes,

    j'ai fureté a droite et a gauche pr résoudre mes problèmes et j'ai trouvé ms je souhaiterai qques explications sur ce que j'ai trouvé fait vraiment. C'est un peu (bcp) obscur pr moi.

    Le contexte,
    Le code,
    Les questions

    Contexte,
    J'ai 1 Main (Main.java) qui ouvre la fenetre principale de l'application
    J'ai 1 .fxml et son Controller (pr la fenetre principale)
    j'ai 1 second .fxml et son Controller pr 1 seconde fenetre.

    Grace au Controller du 1° .fxml, j'ouvre 1 seconde fenetre.
    Voici la méthode ds le Controller associée au bouton déclaré ds le .fxml correspondant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
        @FXML
        private void ouvrirSectionLivres(ActionEvent event) throws IOException {
     
        	//
        	Stage stage02;
        	Scene scene02;
        	AnchorPane scene02Layout;
     
        	try {
     
    	    	stage02 = new Stage();
     
    	    	FXMLLoader loader = new FXMLLoader();
     
    	    	loader.setLocation(Main.class.getResource("views/FXML_scene02Layout.fxml"));i
     
    	    	scene02Layout = loader.load();
     
    	    	scene02 = new Scene(scene02Layout);
     
    	    	stage02.setScene(scene02);
     
    	    	// permet de rendre la stage02 modal et de garder le focus
    	    	// stage01 n'est pas utilisable tant que stage02 est là
    	    	stage02.initModality(Modality.WINDOW_MODAL);
    	    	stage02.initOwner(((Node) event.getSource()).getScene().getWindow());
     
    	    	stage02.setTitle("Section Livres: affichage de la base de données.");
     
    	    	stage02.show();
     
     
        	} catch (IOException err) {
     
        		//
        		err.printStackTrace();
        	}
        }
    Ds mon 2° .fxml (pr la seconde fenetre), je crée 1 bouton pr fermer cette seconde fenetre.
    Voici la méthode implémentée ds le Controller associé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	@FXML
        private void quitterSectionLivres(ActionEvent event) {
     
    		// System.out.println("quitter");
     
    		Stage stage02 = (Stage) scene02_AP01_P03_btnQuitter.getScene().getWindow();
     
    	    stage02.close();
     
     
        }
    2 petites quest°:
    La première au niveau de la concept°.
    Je ne trouve pas super... "pro" d'avoir la methode qui ouvre la fenetre ds le 1° Controller et la methode
    qui ferme cette même fenetre ds le 2° Controller.
    Comment faîtes vs pr réunir les 2 méthodes ds le meme fichier?

    La seconde question est la L de la seconde méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Stage stage02 = (Stage) scene02_AP01_P03_btnQuitter.getScene().getWindow();
    Je ne comprends pas vraiment,
    Cette L de code recrée t-elle 1 instance de Stage. En plus c'est ce qu'on appelle 1 cast il me semble?
    je change 1 instance Button en instance Stage?
    C'est bien ça?

    Merci de vos éclaircissements.
    Passez 1 bonne soirée.
    grub

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par grub_fr Voir le message
    La seconde question est la L de la seconde méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Stage stage02 = (Stage) scene02_AP01_P03_btnQuitter.getScene().getWindow();
    Je ne comprends pas vraiment,
    Cette L de code recrée t-elle 1 instance de Stage. En plus c'est ce qu'on appelle 1 cast il me semble?
    je change 1 instance Button en instance Stage?
    C'est bien ça?

    Merci de vos éclaircissements.
    Passez 1 bonne soirée.
    grub
    On appelle successivement la méthode getScene() sur le bouton puis la méthode getWindow() sur la scène ainsi obtenue. Cet enchainement permet donc de retrouver la scène dans laquelle est incluse le bouton puis la fenêtre dans laquelle est incluse cette même scène (qui est de type Window). Cette Window est ensuite castée en Stage (une sous-classe de Window) probablement pour les besoin du code qui suit. Quand on est en mode desktop presque toutes les fenêtres sont des Stage donc ce code devrait fonctionner sans trop de soucis (moins en cas de version mobile).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    conducteur autocar
    Inscrit en
    Janvier 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : conducteur autocar
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2020
    Messages : 67
    Points : 34
    Points
    34
    Par défaut
    ok,

    dc Window et Stage ne désignent pas le meme composant et cô je "planche" sur du desktop, la différence ne m'importe pas.
    En ts les k, Merci pr l'explication.

    grub

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    https://openjfx.io/javadoc/18/javafx...age/Stage.html
    Class Stage

    java.lang.Object
    javafx.stage.Window
    javafx.stage.Stage


    public class Stage
    extends Window
    Stage est une sous-classe de Window.

    • Window c'est juste une fenêtre de base comme en fournissent n'imp quel système de fenêtrage (sous Unix souvent juste une surface blanche sans bordure ni bouton pour la redimensionner ou la fermer), en JavaFX, ça peut être un Stage (voir ci-dessous) ou un PopupWindow (utilise pour les menus surgissant, les infobulles ou encore les menus contextuels).
    • Stage c'est une fenêtre ++ avec bordure, boutons, redimensionnement, décorations de look and feel, etc. dans laquelle s'affiche une application.


    et c'est en gros pareil sous AWT et Swing avec Window -> Frame -> JFrame
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [STM32] Code fonctionnel sur carte d'essai mais pas sur PCB
    Par tengalice49 dans le forum Embarqué
    Réponses: 4
    Dernier message: 20/07/2018, 17h27
  2. Code fonctionnel sous eclipse mais non fonctionnel en jar
    Par hannibal.76 dans le forum Eclipse Java
    Réponses: 22
    Dernier message: 17/11/2011, 12h22
  3. [FLASH 8] 2 codes semblables mais resultats differents !?
    Par kubito dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 14/04/2006, 16h17
  4. utilisation de code barre - demande d'explication
    Par cortex024 dans le forum Windows
    Réponses: 15
    Dernier message: 16/02/2006, 16h37
  5. Vos avis sur une démission possible svp ?
    Par root76 dans le forum Démission
    Réponses: 11
    Dernier message: 30/01/2006, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo