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:
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.