Bonjour à tous et à toutes,

Je vous demande de l'aide, car je désire envoyer des fichiers dans un dossier après un certain temps n qui peut être des secondes, minutes, heures, jours, etc...
J'arrive à envoyer les fichiers pour des secondes pour n'importe quelle valeur n, sauf lorsque je choisis un type "minutes" après être passé par des secondes, mes minutes gardent la valeur des secondes et donc une minute = une seconde.

J'utilise JavaFX pour programmer, un TextField pour récupérer une valeur saisie (durée demandée) et un ComboBox pour récupérer un type (secondes, minutes,etc..)

Je vous mets mon code pour une meilleure compréhension :

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
 
                        //Valeur du ComboBox par défaut
                        output = comboBox.getSelectionModel().getSelectedItem().toString();
 
                        //Valeur par défaut pour les secondes, minutes, etc...
    		        valeur = 1;
 
                        //Ici lorsque je clique sur mon ComboBox, je récupère la valeur du ComboBox
                        tabledateF.getItems().get(0).getTemps().valueProperty().addListener((observable, oldValue, newValue) -> {
				task.cancel();
    			        output = newValue;	
				System.out.println(output);
			});
 
                        //Selon le type du ComboBox choisi j'éxecute mes codes ci-dessous
			switch(output) {
                                //Ici tout fonctionne, mais si je choisis ensuite des minutes, je reste bloqué dans case "Secondes"
				case "Secondes" :
					System.out.println(output);
					timer = new Timer();
 
					//Execute la première tâche par défaut, soit toutes les secondes
					task = new TimerTask() {
		   	    		   public void run() {
		   	    			   envoyerFichier(file, envoie);
		   	    		   }
		   			};
		   			timer.scheduleAtFixedRate(task, 0, (1000 * valeur));
 
		   			//Lorsqu'on change de valeur dans le TextField on vérifie si la valeur est numérique
		   			//Et on annule la tâche par défaut, pour lancer une nouvelle tâche avec la valeur modifiée
					tabledateF.getItems().get(0).getTexttemps().textProperty().addListener((observable, oldValue, newValue) -> {
	   	    			if(isNumeric(tabledateF.getItems().get(0).getTexttemps().getText())) {
		   	    			valeur = Integer.parseInt(tabledateF.getItems().get(0).getTexttemps().getText());
		   	    			System.out.println(valeur);
		   	    			task.cancel();
		   	    			task = new TimerTask() {
				   	    		   public void run() {
				   	    			   envoyerFichier(file, envoie);
				   	    		   }
				   			};
		   	    			timer.scheduleAtFixedRate(task, 0, (1000 * valeur));
		   	    		}
	   	    			else
	   	    				System.out.println("Champ vide");
	   				});
	   			break;
                                case "Minutes" :
	    			System.out.println(output + "lol");
	    			timer = new Timer();	
					task = new TimerTask() {
		   	    		   public void run() {
		   	    			   envoyerFichier(file, envoie);
		   	    		   }
		   			};
		   			timer.scheduleAtFixedRate(task, 0, (1000 * 60 * valeur));
 
					tabledateF.getItems().get(0).getTexttemps().textProperty().addListener((observable, oldValue, newValue) -> {
	   	    			if(isNumeric(tabledateF.getItems().get(0).getTexttemps().getText())) {
		   	    			valeur = Integer.parseInt(tabledateF.getItems().get(0).getTexttemps().getText());
		   	    			System.out.println(valeur);
		   	    			task.cancel();
		   	    			task = new TimerTask() {
				   	    		   public void run() {
				   	    			   envoyerFichier(file, envoie);
				   	    		   }
				   			};
		   	    			timer.scheduleAtFixedRate(task, 0, (1000 * 60 *valeur));
		   	    		}
	   	    			else
	   	    				System.out.println("Champ vide");
	   				});
	   			break;
                           }
Je pense que mon problème vient du fait que par défaut mon ComboBox choisi des secondes, donc cela fonctionnera bien pour des secondes, mais une fois un autre type de mon ComboBox choisi, je resterai bloquer dans case "Secondes" et ce que je voudrai c'est remonter et revérifier mon output dans mon switch.

Merci d'avance pour vos réponses, bonne après-midi à vous .