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

avec Java Discussion :

Demande d'aide problème switch


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 5
    Par défaut Demande d'aide problème switch
    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 .

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Si tu exécutes le code tel quel à la suite, tu ne rentreras jamais dans addListener donc la valeur du switch restera toujours a 1.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. demande d'aide à résoudre un problème en prolog
    Par riri44 dans le forum Prolog
    Réponses: 3
    Dernier message: 07/03/2013, 13h14
  2. [Demande d'aide]Problème java
    Par steph2608 dans le forum Administration système
    Réponses: 2
    Dernier message: 21/07/2010, 23h32
  3. Demande d'aide : problème avec iReport
    Par sessionakh dans le forum iReport
    Réponses: 1
    Dernier message: 19/09/2007, 15h01
  4. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

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