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 :

gérer les évènements d'une ArrayList.


Sujet :

JavaFX

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 2
    Points : 2
    Points
    2
    Par défaut gérer les évènements d'une ArrayList.
    Bonjour, alors voilà, je bloque depuis un moment sur mon code. J'ai vraiment besoin d'aide
    Voici une classe de test que j'ai fais pour illustrer mon problème :

    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
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.layout.FlowPane;
    import javafx.stage.Stage;
     
    public class test extends Application {
     
        private Scene scene;
        private ArrayList<Label> listeLabel;
        private FlowPane layout;
        private Button btnPlus;
        private int compteur;
     
        public void start(Stage fenetre){
            compteur = 1;
            listeLabel = new ArrayList<>();
            listeLabel.add(new Label("______ 1 ______ "));
            btnPlus = new Button("+");
            layout = new FlowPane(btnPlus,listeLabel.get(0));
            scene = new Scene(layout,400,200);
            fenetre.setScene(scene);
            fenetre.show();
     
            btnPlus.setOnAction(e ->{
                compteur++;
                Label lbl = new Label("______"+compteur+"______ ");
                listeLabel.add(lbl);
                layout.getChildren().add(listeLabel.get(compteur-1));
            });
     
     
     
            for (int i=0; i<listeLabel.size(); i++){
                Label lblTemporaire = listeLabel.get(i);
                listeLabel.get(i).setOnMouseClicked( e ->{
                    System.out.println(lblTemporaire.toString());
                });
            }
        }
     
    }
    En gros ce qu'il se passe c'est juste que lorsque je clique sur le bouton "+" un Label supplémentaire s'ajoute avec un compteur. Donc je vais avoir "1" puis "2" si j'appui sur le bouton, puis "3" si j'appuis encore, etc ...
    Ensuite, le but c'est de récupérer les informations de ce qui est présent dans ma listeLabel et donc le problème se situe dans ma lambda expression avec le setOnMouseClicked. ce que je veux c'est simplement afficher en console le label sur lequel je clique. Théoriquement, à chaque fois que je crées un label, il s'ajoute dans l'ArrayList listeLabel. Sauf que la lambda expression de s'active que pour le premier Label.
    Je ne suis qu'un étudiant et je début en Java, du coup désolé d'avance si ça parait un peu bête mais bon ... j'ai rien trouvé pour m'aider.

  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
    Une grosse erreur dans ce code qui serait apparue en passant dessus avec le débuggeur : au moment où tu lances ta boucle pour installer tes écouteurs sur tes labels, ta liste contient un et unique seul élément. Lorsque le label 2 est ajouté, aucun écouteur est placé dessus.


    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
        public void start(Stage fenetre){
            btnPlus = new Button("+");
            layout = new FlowPane(btnPlus);
            btnPlus.setOnAction(e -> addLabel());
            // Add label 1.
            addLabel();
            scene = new Scene(layout,400,200);
            fenetre.setScene(scene);
            fenetre.show();
        }
     
        private void addLabel() {
            compteur ++;
            final Label lbl = new Label("______"+ compteur +"______ ");
            lbl.setOnMouseClicked( e -> addLabel());
            listeLabel.add(lbl);
            layout.getChildren().add(lbl);
        }
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup pour votre réponse, je vois beaucoup mieux comment je dois faire

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/09/2019, 16h54
  2. [prototype] gérer les événements dans une classe
    Par nawac dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/05/2010, 18h44
  3. Gérer les événements d'une fenêtre
    Par Al2Java dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/08/2008, 00h49
  4. Réponses: 26
    Dernier message: 30/07/2007, 12h09

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