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 :

Afficher les données dans une popup


Sujet :

JavaFX

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut Afficher les données dans une popup
    Bonjour,

    Alors comment je vais vous expliquez mon problème, au fait j'ai un bouton et lorsque je clique sur ce dernier j'affiche une fenêtre.
    voici mon code (SampleController.java)

    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
    @FXML
    	protected void handleAdd() throws IOException
    	{
    		stage  = new Stage();
    		stage.initModality(Modality.WINDOW_MODAL);
     
    		  FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/AjoutEquipage.fxml"));
    		  Pane myPane=(Pane) fxmlLoader.load();
    		   control = context.getBean(AjoutEquipageController.class);
    	//	control = (AjoutEquipageController) fxmlLoader.getController();	
    		control.listActivites.getItems().setAll(data);//remplir la  combobox
     
    		 control.listActivites.valueProperty().addListener(new ChangeListener<Object>() {
     
    			@Override
    			public void changed(ObservableValue<? extends Object> ov, Object t, Object t1) {
     
    					creatView(control.vbox,t1);
     
    				}
    		  });
     
    			Scene scene = new Scene(myPane,800,600);
    			stage.setScene(scene);
    			stage.show();
            }
    alors mon problème c'est que lorsque j'utilise la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     control = context.getBean(AjoutEquipageController.class);
    J'arrive pas à avoir les données dans ma combobox

    alors que ça marche si je remplace la ligne précédente par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    control = (AjoutEquipageController) fxmlLoader.getController();
    voilà j'espère que c'est clair

    merci pour votre aide

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    lorsque tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1.FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/AjoutEquipage.fxml"));
    2.		  Pane myPane=(Pane) fxmlLoader.load();
    1. initialise le fichier a telecharger
    2. fxmlLoader.load() charge le fichier fxml initialisé en 1.) ainsi que le controlleur qui tu as specifié dans le fichier fxml. et a cet instant toutes les composantes de ton fichier fxml sont charger et pret a etre manipuler.

    Quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3. control = context.getBean(AjoutEquipageController.class);
    il recupere la bean AjoutEquipageController que tu as defini mais qui n´est pas dans le meme context que ce que tu as fait au 1 et 2.
    La tu es dans 2 contextes different donc 2 instances differentes.
    Pourquoi veux-tu a tout pris passer par la methode 3.?

    Eric

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    lorsque tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1.FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/AjoutEquipage.fxml"));
    2.		  Pane myPane=(Pane) fxmlLoader.load();
    1. initialise le fichier a telecharger
    2. fxmlLoader.load() charge le fichier fxml initialisé en 1.) ainsi que le controlleur qui tu as specifié dans le fichier fxml. et a cet instant toutes les composantes de ton fichier fxml sont charger et pret a etre manipuler.

    Quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3. control = context.getBean(AjoutEquipageController.class);
    il recupere la bean AjoutEquipageController que tu as defini mais qui n´est pas dans le meme context que ce que tu as fait au 1 et 2.
    La tu es dans 2 contextes different donc 2 instances differentes.
    Pourquoi veux-tu a tout pris passer par la methode 3.?

    Eric
    Merci pour ta réponse, j'ai bien compris ce qui se passe
    sinon je veut passer par la méthode 3, parce que dans le fichier AjoutEquipageController.java j'injecte avec spring mon model (EquipageModel.java) avec un autowired

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Autowired
    protected EquipageModel model;
    On m'a dit que cela est dû au fait d'initialisation de mon contrôleur avec load (méthode 2), et il fallait plutôt utiliser la 3ième méthode

    voilà

    Merci

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut,
    voici une ébauche de reponse,
    Dans ta classe AjoutEquipageController.java, si tu as une methode init() ou initialize() alors ajoute ce code dans ta methode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    AjoutEquipageController controller = this;
    FXMLLoader loader = new FXMLLoader(fxml);
            try {
                loader.setControllerFactory(new Callback<Class<?>, Object>() {
                    @Override
                    public Object call(Class<?> aClass) {
                        return controller;
                    }
                });
    .
    Essaies cela voir, cela devrait marcher.
    Excuses moi pour le retard.

    Eric

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Salut,
    voici une ébauche de reponse,
    Dans ta classe AjoutEquipageController.java, si tu as une methode init() ou initialize() alors ajoute ce code dans ta methode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    AjoutEquipageController controller = this;
    FXMLLoader loader = new FXMLLoader(fxml);
            try {
                loader.setControllerFactory(new Callback<Class<?>, Object>() {
                    @Override
                    public Object call(Class<?> aClass) {
                        return controller;
                    }
                });
    .
    Essaies cela voir, cela devrait marcher.
    Excuses moi pour le retard.

    Eric
    Merci Eric

    Par contre, Est ce que vous pouvez m'expliquer un peux ce que dois faire ce code s'il vous plaît? parce que je ne vois pas le rapport avec ce que je demande?!

    Merci

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut, peux-tu nous donner les codes de:
    AjoutEquipageController.java et SampleController? la je pourrais te faire une ebauche de reponse.
    Eric

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Salut, peux-tu nous donner les codes de:
    AjoutEquipageController.java et SampleController? la je pourrais te faire une ebauche de reponse.
    Eric
    SampleController.java

    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
    40
    41
    42
    43
    44
    45
    public class SampleController implements Initializable {
     
     
    	private AjoutEquipageController control;
     
    	private Stage stage;
     
    	@Resource
    	protected ApplicationContext context;
     
    	protected ObservableList<Activite> data= FXCollections.observableArrayList(new Activite("Activite 1"),new  Activite("Activite 2"));
     
    	@FXML
    	private void handleAdd(ActionEvent event) throws IOException {
     
    		stage  = new Stage();
    		stage.initModality(Modality.WINDOW_MODAL);
     
    		  FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("AjoutEquipage.fxml"));
    		  Pane myPane=(Pane) fxmlLoader.load();
    	//	   control = context.getBean(AjoutEquipageController.class);//ça marche pas avec cette ligne
    		control = (AjoutEquipageController) fxmlLoader.getController();//ça marche	
    		control.listActivites.getItems().setAll(data);//remplir la  combobox
     
    		 control.listActivites.valueProperty().addListener(new ChangeListener<Object>() {
     
    			@Override
    			public void changed(ObservableValue<? extends Object> ov, Object t, Object t1) {
     
    					//creatView(control.vbox,t1);
     
    				}
    		  });
     
    			Scene scene = new Scene(myPane,800,600);
    			stage.setScene(scene);
    			stage.show();
            }
     
     
    	@Override
    	public void initialize(URL url, ResourceBundle rb) {
     
    	}	
    }
    AjoutEquipageController.java


    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
    public class AjoutEquipageController implements Initializable{
     
     
    	@FXML
    	protected ComboBox listActivites;
     
    	@FXML
    	protected TextField a,b;
     
     
    	@Override
    	public void initialize(URL url, ResourceBundle rb) {
     
    	}
    }
    donc lorsque j'utilise la méthode ci-dessous, j'arrive à récupérer mes activités dans la combobox de ma "popup"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("AjoutEquipage.fxml"));
    		  Pane myPane=(Pane) fxmlLoader.load();
    		  control = (AjoutEquipageController) fxmlLoader.getController();

    Ce qui n'est pas le cas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    control = context.getBean(AjoutEquipageController.class);
    Merci

  8. #8
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Essaies ceci:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    package main;
     
     
    import java.net.URL;
    import java.util.ResourceBundle;
     
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.fxml.Initializable;
    import javafx.scene.Parent;
    import javafx.scene.control.ComboBox;
    import javafx.scene.control.TextField;
    import javafx.util.Callback;
     
    public class AjoutEquipageController implements Initializable
    {
        private final String FXML = "AjoutEquipage.fxml";
        @FXML
        protected ComboBox listActivites;
     
        @FXML
        protected TextField a, b;
        private Parent pane;
     
        public AjoutEquipageController()
        {
     
        }
     
        @Override
        public void initialize(URL url, ResourceBundle rb)
        {
            final AjoutEquipageController controller = this;
            FXMLLoader loader = new FXMLLoader(getClass().getResource(FXML));
            try
            {
                loader.setControllerFactory(new Callback<Class<?>, Object>()
                    {
                        @Override
                        public Object call(Class<?> aClass)
                        {
                            return controller;
                        }
                    });
                pane = ((Parent) loader.load());
     
            }
            catch (Exception e)
            {
     
            }
        }
     
        public Parent getPane()
        {
            return pane;
        }
     
        public void setPane(Parent pane)
        {
            this.pane = pane;
        }
     
    }
    sampleController:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    package main;
     
    import javax.annotation.Resource;
     
    import javafx.fxml.Initializable;
    import javafx.scene.layout.Pane;
     
    public class SampleController   implements Initializable {
     
            @Autowired
            private AjoutEquipageController control;
     
            private Stage stage;
     
            @Resource
            protected ApplicationContext context;
     
            protected ObservableList<Activite> data= FXCollections.observableArrayList(new Activite("Activite 1"),new  Activite("Activite 2"));
     
            @FXML
            private void handleAdd(ActionEvent event) throws IOException {
     
                stage  = new Stage();
                stage.initModality(Modality.WINDOW_MODAL);
     
     
                control.listActivites.getItems().setAll(data);//remplir la  combobox
     
                 control.listActivites.valueProperty().addListener(new ChangeListener<Object>() {
     
                    @Override
                    public void changed(ObservableValue<? extends Object> ov, Object t, Object t1) {
     
                            //creatView(control.vbox,t1);
     
                        }
                  });
         Pane myPane= (Pane) control.getPane();
                    Scene scene = new Scene(myPane,800,600);
                    stage.setScene(scene);
                    stage.show();
                }
     
     
            @Override
            public void initialize(URL url, ResourceBundle rb) {
     
            }   
        }
    }
    et fais moi savoir qu´est ce que tu as comme erreur, et la ce soir je vais tester cela moi meme.
    Bonne journée.
    Eric

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Essaies ceci:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    package main;
     
     
    import java.net.URL;
    import java.util.ResourceBundle;
     
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.fxml.Initializable;
    import javafx.scene.Parent;
    import javafx.scene.control.ComboBox;
    import javafx.scene.control.TextField;
    import javafx.util.Callback;
     
    public class AjoutEquipageController implements Initializable
    {
        private final String FXML = "AjoutEquipage.fxml";
        @FXML
        protected ComboBox listActivites;
     
        @FXML
        protected TextField a, b;
        private Parent pane;
     
        public AjoutEquipageController()
        {
     
        }
     
        @Override
        public void initialize(URL url, ResourceBundle rb)
        {
            final AjoutEquipageController controller = this;
            FXMLLoader loader = new FXMLLoader(getClass().getResource(FXML));
            try
            {
                loader.setControllerFactory(new Callback<Class<?>, Object>()
                    {
                        @Override
                        public Object call(Class<?> aClass)
                        {
                            return controller;
                        }
                    });
                pane = ((Parent) loader.load());
     
            }
            catch (Exception e)
            {
     
            }
        }
     
        public Parent getPane()
        {
            return pane;
        }
     
        public void setPane(Parent pane)
        {
            this.pane = pane;
        }
     
    }
    sampleController:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    package main;
     
    import javax.annotation.Resource;
     
    import javafx.fxml.Initializable;
    import javafx.scene.layout.Pane;
     
    public class SampleController   implements Initializable {
     
            @Autowired
            private AjoutEquipageController control;
     
            private Stage stage;
     
            @Resource
            protected ApplicationContext context;
     
            protected ObservableList<Activite> data= FXCollections.observableArrayList(new Activite("Activite 1"),new  Activite("Activite 2"));
     
            @FXML
            private void handleAdd(ActionEvent event) throws IOException {
     
                stage  = new Stage();
                stage.initModality(Modality.WINDOW_MODAL);
     
     
                control.listActivites.getItems().setAll(data);//remplir la  combobox
     
                 control.listActivites.valueProperty().addListener(new ChangeListener<Object>() {
     
                    @Override
                    public void changed(ObservableValue<? extends Object> ov, Object t, Object t1) {
     
                            //creatView(control.vbox,t1);
     
                        }
                  });
         Pane myPane= (Pane) control.getPane();
                    Scene scene = new Scene(myPane,800,600);
                    stage.setScene(scene);
                    stage.show();
                }
     
     
            @Override
            public void initialize(URL url, ResourceBundle rb) {
     
            }   
        }
    }
    et fais moi savoir qu´est ce que tu as comme erreur, et la ce soir je vais tester cela moi meme.
    Bonne journée.
    Eric

    Merci Eric, Je viens de tester ton code et ça marche pas toujours, lorsque je lance le débogueur je vois que à l'appel de la méthode initialize dans AjoutEquipageControlleur il sort jamais de cette méthode, il passe par le try, return etc et il recommence il ne sort pas, en plus à chaque fois le Pane est à null??

    voilà et merci beaucoup pour ton aide

  10. #10
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut voici un exemple que je viens de tester:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    package componentScan;
     
     
    import jar.App2;
     
    import java.net.URL;
    import java.util.ResourceBundle;
     
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.fxml.Initializable;
    import javafx.scene.Parent;
    import javafx.scene.control.ComboBox;
    import javafx.scene.control.TextField;
    import javafx.util.Callback;
     
    import org.springframework.stereotype.Component;
     
    @Component("controller")
    public class AjoutEquipageController implements Initializable
    {
        private final String FXML = "/AjoutEquipage.fxml";
     
        @FXML
        protected ComboBox listActivites;
     
        @javafx.fxml.FXML
        protected TextField a, b;
     
        private Parent pane;
     
        public AjoutEquipageController()
        {
     
        }
     
        public Parent getPane()
        {
            return pane;
        }
     
        public void setPane(Parent pane)
        {
            this.pane = pane;
        }
     
        public void initialize(URL arg0, ResourceBundle arg1)
        {
     
        }
     
        public void init()
        {
            final AjoutEquipageController controller = this;
            FXMLLoader loader = new FXMLLoader(App2.class.getResource(FXML));
            try
            {
                loader.setControllerFactory(new Callback<Class<?>, Object>()
                    {
                        public Object call(Class<?> aClass)
                        {
                            return controller;
                        }
                    });
                pane = ((Parent) loader.load());
     
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
     
        public ComboBox getListActivites()
        {
            return listActivites;
        }
     
        public void setListActivites(ComboBox listActivites)
        {
            this.listActivites = listActivites;
        }
     
    }
    code 1.
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    package componentScan;
     
     
    import java.io.IOException;
    import java.net.URL;
    import java.util.ResourceBundle;
     
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.event.ActionEvent;
    import javafx.fxml.Initializable;
    import javafx.scene.Scene;
    import javafx.scene.layout.Pane;
    import javafx.stage.Modality;
    import javafx.stage.Stage;
    import model.Person;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
     
    @Component("sampleController")
    public class SampleController implements Initializable
    {
     
        @Autowired
        private AjoutEquipageController control;
     
        private Stage stage;
     
        public SampleController()
        {
     
        }
     
        protected ObservableList<Person> data = FXCollections.observableArrayList(new Person("Activite 1", ""), new Person(
                "Activite 2", ""));
     
        @SuppressWarnings("unchecked")
        public void handleAdd(ActionEvent event) throws IOException
        {
     
            stage = new Stage();
            stage.initModality(Modality.WINDOW_MODAL);
            control.init();
            control.getListActivites().getItems().setAll(data);// remplir la combobox
     
            control.getListActivites().valueProperty().addListener(new ChangeListener<Object>()
                {
     
                    public void changed(ObservableValue<? extends Object> ov, Object t, Object t1)
                    {
     
                        // creatView(control.vbox,t1);
     
                    }
                });
            Pane myPane = (Pane) control.getPane();
            Scene scene = new Scene(myPane, 800, 600);
            stage.setScene(scene);
            stage.show();
        }
     
        public void initialize(URL arg0, ResourceBundle arg1)
        {
            // TODO Auto-generated method stub
     
        }
     
    }
    et un model :
    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
     
    package model;
     
    public class Person {
    	private String	name;
    	private String	vorname;
     
    	public Person() {
    		name = "";
    		vorname = "";
    	}
     
    	public Person(String name, String vorname) {
    		this.name = name;
    		this.vorname = vorname;
    	}
     
    	public String getName() {
    		return name;
    	}
     
    	public void setName(String name) {
    		this.name = name;
    	}
     
    	public String getVorname() {
    		return vorname;
    	}
     
    	public void setVorname(String vorname) {
    		this.vorname = vorname;
    	}
     
    }
    et ma classe pour tester:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package jar;
     
     
    import java.io.IOException;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.stage.Stage;
     
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
     
    import componentScan.SampleController;
     
    import config.AppConfig;
     
    public class App2 extends Application
    {
        private Button add;
     
        private SampleController sampleController;
     
        @Override
        public void start(Stage stage)
        {
            stage.setTitle("Button Test");
            add = new Button("Add");
            BorderPane borderpane = new BorderPane();
            ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
            sampleController = (SampleController) ctx.getBean("sampleController");
     
            HBox hbox = new HBox();
            hbox.setSpacing(10);
            hbox.getChildren().add(add);
            add.setOnAction(new EventHandler<ActionEvent>()
                {
     
                    public void handle(ActionEvent arg0)
                    {
                        try
                        {
                            sampleController.handleAdd(arg0);
                        }
                        catch (IOException e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                });
            borderpane.setTop(hbox);
     
            Scene scene = new Scene(borderpane, 800, 600);
            stage.setFullScreen(true);
     
            stage.setScene(scene);
            stage.show();
        }
     
        public static void main(String[] args)
        {
            launch(args);
        }
    }
    ainsi que le fichier fxml:
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import java.lang.*?>
    <?import javafx.collections.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    <?import javafx.scene.layout.StackPane?>
     
    <StackPane prefHeight="157.0" prefWidth="149.0" xmlns:fx="http://javafx.com/fxml" fx:controller="componentScan.AjoutEquipageController">
      <!-- TODO Add Nodes -->
      <children>
        <ComboBox fx:id="listActivites" StackPane.alignment="TOP_LEFT">
          <items>
            <FXCollections fx:factory="observableArrayList">
              <String fx:value="Item 1" />
              <String fx:value="Item 2" />
              <String fx:value="Item 3" />
            </FXCollections>
          </items>
        </ComboBox>
        <TextField fx:id="a" prefWidth="200.0" StackPane.alignment="CENTER" />
        <TextField fx:id="b" alignment="BOTTOM_CENTER" prefWidth="200.0" StackPane.alignment="BOTTOM_CENTER" />
      </children>
    </StackPane>

    et ca marche comme cela.
    fais moi signe si quelque chose ne passe pas comme tu aimerais.

    Eric

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Merci Eric encore une fois, au fait je voudrais récupérer mon "Bean" AjoutEquipageController dans SampleController et non pas dans mon application..mon problème c'est que pane (méthode init) est toujours à nulle?

    Merci beaucoup pour ton aide

  12. #12
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    voici ma source, regardes et fais moi signe, je ne comprend pas ma Bean AjoutEquipageController recuperer dans SampleController @Autowirred, je viens de modifier, et j´ai tout mis dans le fichier attaché.
    La pane n´est pas nulle.
    Eric
    Fichiers attachés Fichiers attachés

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    ça marche pas toujours..je vois pas pourquoi, j pense que je vais garder la première solution même si ce n'est pas très propre

    Merci pour tous Jeffray

  14. #14
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    peux tu me poster ton project, je vais essayer de voir ce qui cloche, la je pourrais te dire les modifications a apporter pour que cela marche.
    Eric

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    peux tu me poster ton project, je vais essayer de voir ce qui cloche, la je pourrais te dire les modifications a apporter pour que cela marche.
    Eric
    euh je ne peux c'est un grand projet de mon stage
    dans ton code tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sampleController = (SampleController) ctx.getBean("sampleController");
    dans ton application, moi je veux la mettre dans SampleController.java ainsi je pourrais injecter mon modele dans AjoutEquipageControler.java à l'aide de @Autowired

    Merci

  16. #16
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Tu peux le faire,
    a moins que je n´ai pas compris le probleme, je crois que tu peux l´injecter n´importe ou, seulement verifier qu´il n´y ai pas un cycle interminable.
    Eric

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Tu peux le faire,
    a moins que je n´ai pas compris le probleme, je crois que tu peux l´injecter n´importe ou, seulement verifier qu´il n´y ai pas un cycle interminable.
    Eric
    AjoutEquipageController.java

    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
    @Override
        public void initialize(URL url, ResourceBundle rb)
        {
            final AjoutEquipageController controller = this;
            FXMLLoader loader = new FXMLLoader(getClass().getResource(FXML));
            try
            {
                loader.setControllerFactory(new Callback<Class<?>, Object>()
                    {
                        @Override
                        public Object call(Class<?> aClass)
                        {
                            return controller;
                        }
                    });
                pane = ((Parent) loader.load());
     
            }
            catch (Exception e)
            {
     
            }
        }
    SampleController.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Autowired
    protected AjoutEquipageController control;
    Je lance mon application en mode deboggeur, le @Autowired fait appel à initialize du AjoutEquipageController.java, et là il ne sort jamais de cette méthode c'est infini ??

    Tu as une idée pourquoi il fait cela?

    Merci

  18. #18
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    exact, ce que tu fais appel une boucle infini, tu dois :
    creer une methode init()
    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
     
    public void init()
        {
            final AjoutEquipageController controller = this;
            FXMLLoader loader = new FXMLLoader(App2.class.getResource(FXML));
            try
            {
                loader.setControllerFactory(new Callback<Class<?>, Object>()
                    {
                        public Object call(Class<?> aClass)
                        {
                            return controller;
                        }
                    });
                pane = ((Parent) loader.load());
     
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    et dans ton constructeur sans parametre faire appel a cet init();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public AjoutEquipageController()
        {
            init();
        }
    et simplement vider ta methode initialze
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public void initialize(URL arg0, ResourceBundle arg1)
        {
     
        }
    car cette methode est appelée chaque fois que tu appelles la methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     pane = ((Parent) loader.load());
    Bonne Journée
    Eric

Discussions similaires

  1. afficher les données dans une datagridview d'une façon verticale
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/11/2009, 19h37
  2. transmettre les données dans une popup
    Par nebil dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/08/2008, 14h44
  3. Réponses: 2
    Dernier message: 13/12/2007, 19h34
  4. Réponses: 2
    Dernier message: 02/03/2007, 21h38
  5. [VBA-E] afficher les données d'une datagrid dans des zones de textes
    Par fadwa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/05/2006, 13h51

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