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 :

boucle for sur un label


Sujet :

JavaFX

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut boucle for sur un label
    bonjour

    j'ai un petit problème que je souhaite résoudre.

    je souhaite avoir un label qui m'affiche le nombre de fichiers traiter

    donc j'ai fait une boucle avec le label.setText (""+nbr);

    mes le problème c'est que sa ne marche pas dans le label seulement le nombre total de fichiers a traiter s'affiche.

    quelle peu t-il m'aider


    ce que je veux c'est un décompte dans un label genre : message : (1) fichier traiter (2 ) fichier traiter etc....

    alors que la il m'affiche une seul fois le nombre total de fichiers qui vent être traiter.

    quelle qu'un peu t-il m'aider

    merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     for (int i=0;i<files.size();i++){
     
     
    msgResultat.setText(""+i);
    merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Comme je te l'ai déjà dit ici, tu ne peux pas faire une boucle de ce genre dans l'Event Dispatch Thread, ce que tu fais probablement vu le résultat que tu obtiens. Et comme dit dans le même message, la solution c'est le SwingWorker. Et je t'ai même mis un exemple de principe !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    quand j’enlève mon thread alors la fenêtre faite avec javafx bug ce fige et bloque tous

  4. #4
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    voici mon code

    ça c'est le contrôleur
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertisseur;
     
    import java.awt.Desktop;
    import java.io.File;
    import java.net.URL;
    import java.util.Date;
    import java.util.List;
    import java.util.ResourceBundle;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javafx.beans.property.SimpleStringProperty;
    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.fxml.Initializable;
    import javafx.scene.Group;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.ListView;
    import javafx.scene.layout.HBox;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Circle;
    import javafx.stage.DirectoryChooser;
    import javafx.stage.FileChooser;
    import javafx.stage.Stage;
     
    /**
     *
     * @author soso
     */
    public class FXMLDocumentController implements Initializable  {
     
     
     
     
     
        @FXML
        private Label IdCompte;
     
     
     
     
        @FXML
        private ObservableList<String> listFichier = FXCollections.observableArrayList();
     
     
        @FXML
        private String DossierDestinataire;
     
        @FXML
        private String DossierDesFichiersConvertie;
     
        @FXML
        private Label label;
     
        @FXML
        private List<File> files;
     
        @FXML
        private ListView ListeViewDesFichiers;
     
     
        @FXML
        public String getDossier (){ //le dossier des fichiers convertie
        return DossierDesFichiersConvertie;
        }
     
        @FXML
        public String setDossier (String DossierDesFichiersConvertie){ // cette methode permet de modifier le dossier des fichiers converties
        this.DossierDesFichiersConvertie = DossierDesFichiersConvertie;
        return this.DossierDesFichiersConvertie;
        }
     
        @FXML
        private DirectoryChooser directoryChooser;
     
        @FXML
        private File selectedDirectory;
     
     
        @Override
        public void initialize(URL url, ResourceBundle rb) {
     
            IdCompte.setText("fddsfdfds");
     
     
    IdCompte.setText(new String("sqdsqdqsd").toString());
     
            // TODO
        }    
     
     
     
     
        @FXML
        public void CliqueDossierdesFichiersConvertire (){
           // cette methode pairmer de selectionner le dossier ou les fichiers convertire seront transferer.
             directoryChooser =
                    new DirectoryChooser();
                File selectedDirectory =
                        directoryChooser.showDialog(new Stage());
                if (selectedDirectory != null) {
                    selectedDirectory.getAbsolutePath();
     
                    System.out.println("..........."+selectedDirectory.getAbsolutePath());
     
     
                this.setDossier(selectedDirectory.getAbsolutePath()); // modifie le dossier des fichiers convertie.
                // en peu recuperer le dossier des resultat avec la methode getDossier();
     
    DossierDestinataire = selectedDirectory.getAbsolutePath(); //enregistre le dossier destinataitre dans la variable global.
     
     
     
     
                }
     
     
     
            }        
        @FXML
        public void parcourirLesFichiers (){ // methode pour selectionner les fichiers a convertires.
        System.out.println("test : methode pour selectionner les fichiers a convertire .");
     
     
     
      FileChooser fileChooser = new FileChooser();
        fileChooser.getExtensionFilters().add(
                new FileChooser.ExtensionFilter("fichiers", "*"
                        ));
     
     
        files = fileChooser.showOpenMultipleDialog(new Stage());
     
     
     
    //        System.out.println("____________"+files.get(1));
    if (files != null){
     
     
     
     
     
     
        int NombreDeFichiers = files.size();
     
        int i = 0;
     
        while (i< NombreDeFichiers){
    //    System.out.println(">>>>"+ files.get(i));
     
        /////////////////
    //System.out.println("||||||||||||||>"+files.get(i).getName());
     
     
    // ce code permet de recuperer le nom du fichier sans l'extention.
    String nomCourt = (files.get(i).getName() != null) ? files.get(i).getName().substring(0,files.get(i).getName().indexOf('.')) : "";
     
     
     
             ListeViewDesFichiers.getItems().add(nomCourt); //ceci est pour la COUCHE UI
     
     
    listFichier.add(files.get(i).toString()); // ceci permet de tous enregistrer dans "listFichier
            System.out.println("::::::::::::>"+files.get(i).getName());
     
            i++;
        }
    }
    else {
        System.out.println("il n y a pas de fichiers........");
    }
    //    System.out.println(">>>>"+ files  );
     
     
     
     
     
        }                
        /*
        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
    fileChooser.getExtensionFilters().add(extFilter);
    File file = fileChooser.showOpenDialog(new Stage());
    System.out.println(file);
     
    */
     
     
            public void ConvertirAPE () throws InterruptedException, Exception{ // cette methode est liaie a un bouton. cette methode permet de convertir un ou des 
                // fichier aux format APE
                System.out.println("test APE");
     
     
     
    System.out.println("Mon traitement");
     
          Convertions converteur = new Convertions();
     
     
     
     
     
    ///////////////////////
     for (int i=0;i<files.size();i++){
     
     
     
     
    IdCompte.setText("fddsfdfds>>>"+i);
     
          this.IdCompte.setText(new String(">"+i).toString()+" fichiers vend etre convertis veuillez patientez...");
     
     
    //     int i = 0;
    //     while (i<listFichier.size()){
     
       // ce code permet de recuperer le nom du fichier sans l'extention.
    //String nomCourt = (listFichier.get(i) != null) ? listFichier.get(i).substring(0,listFichier.get(i).indexOf('.')) : "";
     
    //NO                System.out.println("--------------"+listFichier.get(i));
    /*
                    Convertions converteur = new Convertions (
                "C:\\ffmpeg\\bin\\ffmpeg.exe", 
                listFichier.get(i), 
                DossierDestinataire+"aaaa"+i+".mp4");
                    
                    */
     
      //  try {
            //DossierDestinataire
    System.out.println("->>>>>><<<<>>>>>"+DossierDestinataire+"\\"+listFichier.get(i));
     
            System.out.println("''''''''''''''''''''"+files.get(i).toString());
     
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(i).toString(), "C:\\Users\\soso\\Documents\\test\\d\\"+i+".mp4");
     
    /*
    converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(1).toString(), "C:\\Users\\soso\\Documents\\test\\2.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(2).toString(), "C:\\Users\\soso\\Documents\\test\\3.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(3).toString(), "C:\\Users\\soso\\Documents\\test\\4.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(4).toString(), "C:\\Users\\soso\\Documents\\test\\5.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(5).toString(), "C:\\Users\\soso\\Documents\\test\\6.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(6).toString(), "C:\\Users\\soso\\Documents\\test\\7.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(7).toString(), "C:\\Users\\soso\\Documents\\test\\8.mp4");
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(8).toString(), "C:\\Users\\soso\\Documents\\test\\9.mp4");
     
    *//*
        } catch (InterruptedException ex) {
            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }
    */    
    //       i++;
     
    }
     
     
     
     
     
     
    //      Process p = rt.exec("done"); 
     
    //   Process p = rt.exec("break on"); 
     //;;;;;;;;;;;;;;;
     ////////////////////////
     
     
     
     
     
     
     
                ////////////////
     
     
                //////////////
     
            }
     
     
     
     
            public void ConvertirCDA (){
                        System.out.println("test CDA");
     
     
     
     
            }
     
            public void ConvertirWAV (){
     
                            System.out.println("test WAV");
            }
     
     
            public void ConvertirMP3 (){
                        System.out.println("test MP3");
            }
     
            public void ConvertirWMA (){
                        System.out.println("test WMA");
            }
     
            public void ConvertirAAC (){
                        System.out.println("test AAC");
            }
     
            public void ConvertirOGG (){
                        System.out.println("test OGG");
            }
     
            public void ConvertirREALAUDIO (){
                        System.out.println("test REALAUDIO");
            }
     
            public void ConvertirFLAC (){
     
                            System.out.println("test FLAC");
     
            }
     
            public void ConvertirMPC (){
     
                            System.out.println("test MPC");
     
            }
     
            public void ConvertirALAC (){
                            System.out.println("test ALAC");
     
            }
            public void ConvertirMPEG (){
                        System.out.println("test MPEG");
            }
     
            public void ConvertirMP4 (){
                            System.out.println("test MP4");
     
            }
     
            public void ConvertirAVI (){
     
                            System.out.println("test AVI");
     
            }
     
            public void ConvertirWMV (){
                        System.out.println("test WMV");
            }
     
            public void ConvertirASF (){
                        System.out.println("test ASF");
            }
     
            public void ConvertirREALMEDIA (){
                            System.out.println("test REALMEDIA");
     
            }
     
            public void ConvertirFLV (){
                            System.out.println("test FLV");
     
            }
     
            public void ControllerViderListe(){ // cette methode permet de vider la liste des fichiers a convertire.
     
                System.out.println("test cette methode permet de vide la lsite des fichiers a convertire");
     
     
     
    /*
                ListeViewDesFichiers.getItems().remove(1);
                ListeViewDesFichiers.getItems().remove(1);
                ListeViewDesFichiers.getItems().remove(1);
                
                ListeViewDesFichiers.getItems().remove(1);
                ListeViewDesFichiers.getItems().remove(1);
      */          
                /*
            listFichier.remove(true);
            ListeViewDesFichiers.getItems().removeAll(true);
            
            listFichier.setAll("dsfdf");
            */
     
     
     
     
     
     
        int z = 0;
        while (z< listFichier.size()){
        System.out.println(">>>>"+ listFichier.get(z));
     
        /////////////////
     
        ListeViewDesFichiers.getItems().remove(0);
     
        listFichier.remove(listFichier.get(z).toString());
     
    //         ListeViewDesFichiers.getItems().remove(listFichier.get(z).toString());
    //                 add(listFichier.get(i).toString()); //ceci est pour la COUCHE UI
    //listFichier.remove(listFichier.get(z).toString());
    //        add(listFichier.get(i).toString()); // ceci permet de tous enregistrer dans "listFichier
     
    ///////////////////
     
     
     
            z++;
        }
     
    }
     
     
     
     
            //fill.set(value);
     
     
     
     
            }// fin de la classe : Controlleur


    la classe Convertions

    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
     
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertisseur;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    import java.util.concurrent.TimeUnit;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javafx.fxml.FXML;
    import javafx.scene.control.Label;
    import static jdk.nashorn.internal.objects.NativeJava.type;
     
    /**
     *
     * @author soso
     */
    public class Convertions  {
     
     
     
        private int Compte;
     
        /* 
        String Capp;
        String CFichierAConvertire;
        String CFichierResultat;
        */
        /*
        public Convertions (String APP, String FichierAConvertire, String FichierResultat){
    this.Capp = APP;
    this.CFichierAConvertire = FichierAConvertire;
    this.CFichierResultat = FichierResultat;
        
        }
        */
        public Convertions (){} // constructeur
     
        public static int eee = 0;
     
        public void MetodeConvertire (String Dapp,String FichierAconvertire,String FichierResultat) throws Exception{
     
     
     
     
          System.out.println("Thread Running");
     
     
     
       String[] command = {"CMD", "/C", Dapp+" -i "+FichierAconvertire+" "+FichierResultat};
    		ProcessBuilder processBuilder = new ProcessBuilder(command);
     
                            //.directory(new File("bin")); 
     
    		try {
    			processBuilder.inheritIO();
    			Process process = processBuilder.start();
    			process.waitFor();
     
     
     
     
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (InterruptedException e) {
    		}
    		System.out.println("Fin du programme");
     
     
     
     
    	}
     
    /* exemple ////////////
             Process p = rt.exec("C:\\ffmpeg\\bin\\ffmpeg.exe -i C:\\ffmpeg\\musique\\chiens-de-paille-maudits-soient-les-yeux-fermes-1998-bo-film-taxi-rap-hip-hop-francais.mp3 "
            + "C:\\ffmpeg\\musique\\XXXXXXXXXXXXXXXXXX.mp4"); 
    */
    /*
    String UrlApplcationDeConvertion = "C:\\ffmpeg\\bin\\ffmpeg.exe";
    String FichierAconvertire = "C:\\ffmpeg\\musique\\chiens-de-paille-maudits-soient-les-yeux-fermes-1998-bo-film-taxi-rap-hip-hop-francais.mp3";
    String FichierResultat = "C:\\ffmpeg\\musique\\XXXXXXXXXXXXXXXXXX.mp4";
    */
    /*
    String UrlApplcationDeConvertion = "C:\\ffmpeg\\bin\\ffmpeg.exe";
    String FichierAconvertire = "C:\\ffmpeg\\musique\\chiens-de-paille-maudits-soient-les-yeux-fermes-1998-bo-film-taxi-rap-hip-hop-francais.mp3";
    String FichierResultat = "C:\\ffmpeg\\musique\\XXXXXXXXXXXXXXXXXX.mp4";
    */
     
    //>>>>>>>>>>>>>>>>>Process p = rt.exec(Dapp+" -i "+FichierAconvertire+" "+ FichierResultat ); 
     
     
     
    /*
            String[] command = {"CMD", "/C", "c:\\ffmpeg\\bin\\ffmpeg.exe -i C:\\Users\\soso\\Music\\buena-vista-social-club-chan-chan-hq.mp3"
                    + " C:\\ffmpeg\\musique\\a\\vvvvvvvvvvvv.Mp4"};
     
    */
    /*            
            String[] command = {"CMD", "/C", Dapp+" -i "+FichierAconvertire+" "+FichierResultat };
                        
            ProcessBuilder probuilder = new ProcessBuilder( command );
            //You can set up your work directory
            //>>>probuilder.directory(new File("c:\\"));
            
            Process process = probuilder.start();
            
            //Read out dir output
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            
    */
     
     
     
     
     
     
     
     
     
     
     
     
     
    //Process p = rt.exec("for i in C:\\Users\\soso\\Documents\\test\\a\\buena-vista-social-club-chan-chan-hq.mp3; do ffmpeg -i \"$i\" -acodec libmp3lame -ac 2 -ab 128k \"${i%m4a}mp3\"; done\n" ); 
     
     
     
     
    //           System.out.println(">>>>"+p.waitFor());
     
     
     
     
     
     
     
     
     
     
     
     
       public int GetDecompte (){
            return Compte;
     
       }  
     
       public int SetDecompte (int CompteA){
     
           return CompteA;
     
       }
     
     
    }

    l'interface avec javafx fxml

    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import javafx.geometry.Insets?>
    <?import javafx.scene.control.Button?>
    <?import javafx.scene.control.ButtonBar?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.control.ListView?>
    <?import javafx.scene.effect.Blend?>
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.layout.HBox?>
    <?import javafx.scene.layout.Pane?>
     
    <AnchorPane id="AnchorPane" accessibleText="vvvvvv" minHeight="750.0" minWidth="800.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="convertisseur.FXMLDocumentController">
       <effect>
          <Blend />
       </effect>
       <children>
          <HBox layoutX="26.0" layoutY="14.0" prefHeight="57.0" prefWidth="822.0" AnchorPane.bottomAnchor="647.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
             <children>
                <Button fx:id="LesFichiersConvertor" mnemonicParsing="false" onMouseClicked="#parcourirLesFichiers" prefHeight="46.0" prefWidth="253.0" text="Parcourire les fichiers a convertires" />
                <Button fx:id="BoutonLeDossier" mnemonicParsing="false" onMouseClicked="#CliqueDossierdesFichiersConvertire" prefHeight="46.0" prefWidth="253.0" text="dossier des fichiers converties">
                   <HBox.margin>
                      <Insets left="100.0" />
                   </HBox.margin>
                </Button>
                <Button fx:id="BoutonViderListe" mnemonicParsing="false" onMouseClicked="#ControllerViderListe" prefHeight="46.0" prefWidth="205.0" text="Vider liste">
                   <HBox.margin>
                      <Insets left="20.0" />
                   </HBox.margin>
                </Button>
             </children>
          </HBox>
          <Pane layoutX="25.0" layoutY="86.0" prefHeight="269.0" prefWidth="863.0" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="80.0">
             <children>
                <ListView fx:id="ListeViewDesFichiers" layoutX="15.0" layoutY="35.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="826.0">
                   <padding>
                      <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
                   </padding></ListView>
             </children>
             <padding>
                <Insets right="20.0" top="20.0" />
             </padding>
          </Pane>
          <ButtonBar accessibleRole="BUTTON" layoutX="32.0" layoutY="374.0" nodeOrientation="RIGHT_TO_LEFT" prefHeight="108.0" prefWidth="865.0" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="350.0">
            <buttons>
                <Button fx:id="buttonFLAC" mnemonicParsing="false" onMouseClicked="#ConvertirFLAC" prefHeight="83.0" prefWidth="84.0" text="FLAC" />
                <Button fx:id="buttonREALAUDIO" mnemonicParsing="false" onMouseClicked="#ConvertirREALAUDIO" prefHeight="83.0" prefWidth="84.0" text="Real Audio" />
                <Button fx:id="buttonOGG" mnemonicParsing="false" onMouseClicked="#ConvertirOGG" prefHeight="83.0" prefWidth="84.0" text="OGG" />
                <Button fx:id="buttonAAC" mnemonicParsing="false" onMouseClicked="#ConvertirAAC" prefHeight="83.0" prefWidth="84.0" text="AAC" />
                <Button fx:id="buttonWMA" mnemonicParsing="false" onMouseClicked="#ConvertirWMA" prefHeight="83.0" prefWidth="84.0" text="WMA" />
                <Button fx:id="buttonMP3" mnemonicParsing="false" onMouseClicked="#ConvertirMP3" prefHeight="83.0" prefWidth="84.0" text="MP3" />
                <Button fx:id="buttonWAV" mnemonicParsing="false" onMouseClicked="#ConvertirWAV" prefHeight="83.0" prefWidth="84.0" text="WAV" />
                <Button fx:id="buttonCDA" mnemonicParsing="false" onMouseClicked="#ConvertirCDA" prefHeight="83.0" prefWidth="84.0" text="CDA" />
                <Button fx:id="buttonAPE" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onMouseClicked="#ConvertirAPE" prefHeight="83.0" prefWidth="84.0" text="APE" />
            </buttons>
             <effect>
                <Blend />
             </effect>
             <padding>
                <Insets right="10.0" top="10.0" />
             </padding>
          </ButtonBar>
          <ButtonBar layoutX="39.0" layoutY="494.0" nodeOrientation="RIGHT_TO_LEFT" prefHeight="108.0" prefWidth="865.0" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="480.0">
             <buttons>
                <Button fx:id="buttonFLV" mnemonicParsing="false" onMouseClicked="#ConvertirFLV" prefHeight="83.0" prefWidth="84.0" text="FLV" />
                <Button fx:id="buttonREALMEDIA" mnemonicParsing="false" onMouseClicked="#ConvertirREALMEDIA" prefHeight="83.0" prefWidth="84.0" text="RealMedia" />
                <Button fx:id="buttonASF" mnemonicParsing="false" onMouseClicked="#ConvertirASF" prefHeight="83.0" prefWidth="84.0" text="ASF" />
                <Button fx:id="buttonWMV" mnemonicParsing="false" onMouseClicked="#ConvertirWMV" prefHeight="83.0" prefWidth="84.0" text="WMV" />
                <Button fx:id="buttonAVI" mnemonicParsing="false" onMouseClicked="#ConvertirAVI" prefHeight="83.0" prefWidth="84.0" text="AVI" />
                <Button fx:id="buttonMP4" mnemonicParsing="false" onMouseClicked="#ConvertirMP4" prefHeight="83.0" prefWidth="84.0" text="MP4" />
                <Button fx:id="buttonMPEG" mnemonicParsing="false" onMouseClicked="#ConvertirMPEG" prefHeight="83.0" prefWidth="84.0" text="MPEG" />
                <Button fx:id="buttonALAC" mnemonicParsing="false" onMouseClicked="#ConvertirALAC" prefHeight="83.0" prefWidth="84.0" text="ALAC" />
                <Button fx:id="buttonMPC" mnemonicParsing="false" onMouseClicked="#ConvertirMPC" prefHeight="83.0" prefWidth="84.0" text="MPC" />
             </buttons>
             <effect>
                <Blend />
             </effect>
             <padding>
                <Insets right="10.0" top="10.0" />
             </padding>
          </ButtonBar>
          <HBox layoutX="46.0" layoutY="656.0" prefHeight="46.0" prefWidth="838.0">
             <children>
                <Label prefHeight="17.0" prefWidth="71.0" text="Message :" />
                <Label fx:id="IdCompte" prefHeight="17.0" prefWidth="513.0" text="Resultat" />
             </children>
          </HBox>
       </children>
     
     
    </AnchorPane>
    voila .d'avance merci de votre aide.

  5. #5
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    je crois que ça ne marche pas

    ça marche simplement pour du swing ??????

    pour le GUI j'utilise javafx avec les fichiers FXML

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu l'avais précisé (en postant dans le forum JavaFX par exemple), ça aurait été clair.
    Maintenant, en JavaFX, c'est le même principe : il y a un thread pour l'UI, et il faut schéduler au lieu de faire une boucle pour ne pas le bloquer.

    Je ne connais pas JavaFX, mais il semble que :
    1. L'objet TimeLine pourrait être l'équivalent du javax.swing.Timer
    2. que tu peux utiliser un java.util.Timer en utilsant Platform.runLater() pour la mise à jour du texte
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    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
    Timeline ca permet surtout de faire des animations en fait meme si oui ca pourrait etre utilise pour une tache de fond. Si c'est vraiment pour une tache de fond (pas lu le code, pas le temps) il faut utiliser le couple Service (ou SheduledService pour une tache recurrente) et Task qui sont les equivalent de SwingWorker. Voir Tutoriel sur l'exécution d'une tache de fond en JavaFX.
    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

  8. #8
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    bonjour

    mes je n'est toujours pas compris

    moi tous ce que je veus c'est qu'un label qui affiche les fichiers qui reste a traiter genre 5 4 3 2 1 et
    non un affichage figer a 5 par exemple

    merci

  9. #9
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut JAVAFX settext() et bloquage
    bonjour

    j'ai créer un logiciel pour convertir des fichiers audio est vidéo

    l'interface principal est fait avec javafx FXML

    j'ai dans l'interface un Label.setText(""+i+"fichiers a convertir");

    sauf que il y a pas le décompte genre 5 4 3 2 1

    mes il affiche seulement "5 " qui le nombre de fichiers a converitire par exemple

    comment faire pour avoir ce décompte de fichiers a traiter ?

    j'ai un autre problème est que si je ne mes pas de thread dans mon code pour convertir les fichiers l'application ce fige est bloque tous.

    voici mon code

    Convertisseur.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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertisseur;
     
    import java.io.File;
    import javafx.application.Application;
    import javafx.beans.binding.Bindings;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.ToggleButton;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.layout.StackPaneBuilder;
    import javafx.stage.FileChooser;
    import javafx.stage.Stage;
     
    /**
     *
     * @author soso
     */
    public class Convertisseur extends Application {
     
        @Override
        public void start(Stage stage) throws Exception {
     
     
            Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
     
            stage.setResizable(false); // permet de bloquée la modification de la taille de la fenetre.
     
            Scene scene = new Scene(root);
     
            stage.setScene(scene);
     
     
            stage.show();
     
     
     
     
     
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
     
     
     
     
            launch(args);
     
     
     
        }
     
    }
    Convertions.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
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertisseur;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    import java.util.concurrent.TimeUnit;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javafx.scene.control.Label;
    import static jdk.nashorn.internal.objects.NativeJava.type;
     
    /**
     *
     * @author soso
     */
    public class Convertions  {
     
        private int Compte;
     
        /* 
        String Capp;
        String CFichierAConvertire;
        String CFichierResultat;
        */
        /*
        public Convertions (String APP, String FichierAConvertire, String FichierResultat){
    this.Capp = APP;
    this.CFichierAConvertire = FichierAConvertire;
    this.CFichierResultat = FichierResultat;
        
        }
        */
        public Convertions (){} // constructeur
     
     
        public void MetodeConvertire (String Dapp,String FichierAconvertire,String FichierResultat) throws Exception{
     
     
     
      Thread thread = new Thread(){
        public void run(){
          System.out.println("Thread Running");
     
     
     
       String[] command = {"CMD", "/C", Dapp+" -i "+FichierAconvertire+" "+FichierResultat};
    		ProcessBuilder processBuilder = new ProcessBuilder(command);
     
                            //.directory(new File("bin")); 
     
    		try {
    			processBuilder.inheritIO();
    			Process process = processBuilder.start();
    			process.waitFor();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (InterruptedException e) {
    		}
    		System.out.println("Fin du programme");
     
                      }
      };
     
      thread.start();
     
    	}
     
    /* exemple ////////////
             Process p = rt.exec("C:\\ffmpeg\\bin\\ffmpeg.exe -i C:\\ffmpeg\\musique\\chiens-de-paille-maudits-soient-les-yeux-fermes-1998-bo-film-taxi-rap-hip-hop-francais.mp3 "
            + "C:\\ffmpeg\\musique\\XXXXXXXXXXXXXXXXXX.mp4"); 
    */
    /*
    String UrlApplcationDeConvertion = "C:\\ffmpeg\\bin\\ffmpeg.exe";
    String FichierAconvertire = "C:\\ffmpeg\\musique\\chiens-de-paille-maudits-soient-les-yeux-fermes-1998-bo-film-taxi-rap-hip-hop-francais.mp3";
    String FichierResultat = "C:\\ffmpeg\\musique\\XXXXXXXXXXXXXXXXXX.mp4";
    */
    /*
    String UrlApplcationDeConvertion = "C:\\ffmpeg\\bin\\ffmpeg.exe";
    String FichierAconvertire = "C:\\ffmpeg\\musique\\chiens-de-paille-maudits-soient-les-yeux-fermes-1998-bo-film-taxi-rap-hip-hop-francais.mp3";
    String FichierResultat = "C:\\ffmpeg\\musique\\XXXXXXXXXXXXXXXXXX.mp4";
    */
     
    //>>>>>>>>>>>>>>>>>Process p = rt.exec(Dapp+" -i "+FichierAconvertire+" "+ FichierResultat ); 
     
     
     
    /*
            String[] command = {"CMD", "/C", "c:\\ffmpeg\\bin\\ffmpeg.exe -i C:\\Users\\soso\\Music\\buena-vista-social-club-chan-chan-hq.mp3"
                    + " C:\\ffmpeg\\musique\\a\\vvvvvvvvvvvv.Mp4"};
     
    */
    /*            
            String[] command = {"CMD", "/C", Dapp+" -i "+FichierAconvertire+" "+FichierResultat };
                        
            ProcessBuilder probuilder = new ProcessBuilder( command );
            //You can set up your work directory
            //>>>probuilder.directory(new File("c:\\"));
            
            Process process = probuilder.start();
            
            //Read out dir output
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            
    */
     
     
     
     
     
     
     
     
     
     
     
     
     
    //Process p = rt.exec("for i in C:\\Users\\soso\\Documents\\test\\a\\buena-vista-social-club-chan-chan-hq.mp3; do ffmpeg -i \"$i\" -acodec libmp3lame -ac 2 -ab 128k \"${i%m4a}mp3\"; done\n" ); 
     
     
     
     
    //           System.out.println(">>>>"+p.waitFor());
     
     
     
     
     
     
     
     
     
     
     
     
       public int GetDecompte (){
            return Compte;
     
       }  
     
       public int SetDecompte (int CompteA){
            return CompteA;
     
       }
     
     
    }
    FXMLDocument.fxml

    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
    85
    86
    87
    88
    89
    90
    91
    92
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import javafx.geometry.Insets?>
    <?import javafx.scene.control.Button?>
    <?import javafx.scene.control.ButtonBar?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.control.ListView?>
    <?import javafx.scene.effect.Blend?>
    <?import javafx.scene.layout.AnchorPane?>
    <?import javafx.scene.layout.HBox?>
    <?import javafx.scene.layout.Pane?>
     
    <AnchorPane id="AnchorPane" accessibleText="vvvvvv" minHeight="750.0" minWidth="800.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="convertisseur.FXMLDocumentController">
       <effect>
          <Blend />
       </effect>
       <children>
          <HBox layoutX="26.0" layoutY="14.0" prefHeight="57.0" prefWidth="822.0" AnchorPane.bottomAnchor="647.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
             <children>
                <Button fx:id="LesFichiersConvertor" mnemonicParsing="false" onMouseClicked="#parcourirLesFichiers" prefHeight="46.0" prefWidth="253.0" text="Parcourire les fichiers a convertires" />
                <Button fx:id="BoutonLeDossier" mnemonicParsing="false" onMouseClicked="#CliqueDossierdesFichiersConvertire" prefHeight="46.0" prefWidth="253.0" text="dossier des fichiers converties">
                   <HBox.margin>
                      <Insets left="100.0" />
                   </HBox.margin>
                </Button>
                <Button fx:id="BoutonViderListe" mnemonicParsing="false" onMouseClicked="#ControllerViderListe" prefHeight="46.0" prefWidth="205.0" text="Vider liste">
                   <HBox.margin>
                      <Insets left="20.0" />
                   </HBox.margin>
                </Button>
             </children>
          </HBox>
          <Pane layoutX="25.0" layoutY="86.0" prefHeight="269.0" prefWidth="863.0" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="80.0">
             <children>
                <ListView fx:id="ListeViewDesFichiers" layoutX="15.0" layoutY="35.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="826.0">
                   <padding>
                      <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
                   </padding></ListView>
             </children>
             <padding>
                <Insets right="20.0" top="20.0" />
             </padding>
          </Pane>
          <ButtonBar accessibleRole="BUTTON" layoutX="32.0" layoutY="374.0" nodeOrientation="RIGHT_TO_LEFT" prefHeight="108.0" prefWidth="865.0" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="350.0">
            <buttons>
                <Button fx:id="buttonFLAC" mnemonicParsing="false" onMouseClicked="#ConvertirFLAC" prefHeight="83.0" prefWidth="84.0" text="FLAC" />
                <Button fx:id="buttonREALAUDIO" mnemonicParsing="false" onMouseClicked="#ConvertirREALAUDIO" prefHeight="83.0" prefWidth="84.0" text="Real Audio" />
                <Button fx:id="buttonOGG" mnemonicParsing="false" onMouseClicked="#ConvertirOGG" prefHeight="83.0" prefWidth="84.0" text="OGG" />
                <Button fx:id="buttonAAC" mnemonicParsing="false" onMouseClicked="#ConvertirAAC" prefHeight="83.0" prefWidth="84.0" text="AAC" />
                <Button fx:id="buttonWMA" mnemonicParsing="false" onMouseClicked="#ConvertirWMA" prefHeight="83.0" prefWidth="84.0" text="WMA" />
                <Button fx:id="buttonMP3" mnemonicParsing="false" onMouseClicked="#ConvertirMP3" prefHeight="83.0" prefWidth="84.0" text="MP3" />
                <Button fx:id="buttonWAV" mnemonicParsing="false" onMouseClicked="#ConvertirWAV" prefHeight="83.0" prefWidth="84.0" text="WAV" />
                <Button fx:id="buttonCDA" mnemonicParsing="false" onMouseClicked="#ConvertirCDA" prefHeight="83.0" prefWidth="84.0" text="CDA" />
                <Button fx:id="buttonAPE" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onMouseClicked="#ConvertirAPE" prefHeight="83.0" prefWidth="84.0" text="APE" />
            </buttons>
             <effect>
                <Blend />
             </effect>
             <padding>
                <Insets right="10.0" top="10.0" />
             </padding>
          </ButtonBar>
          <ButtonBar layoutX="39.0" layoutY="494.0" nodeOrientation="RIGHT_TO_LEFT" prefHeight="108.0" prefWidth="865.0" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="480.0">
             <buttons>
                <Button fx:id="buttonFLV" mnemonicParsing="false" onMouseClicked="#ConvertirFLV" prefHeight="83.0" prefWidth="84.0" text="FLV" />
                <Button fx:id="buttonREALMEDIA" mnemonicParsing="false" onMouseClicked="#ConvertirREALMEDIA" prefHeight="83.0" prefWidth="84.0" text="RealMedia" />
                <Button fx:id="buttonASF" mnemonicParsing="false" onMouseClicked="#ConvertirASF" prefHeight="83.0" prefWidth="84.0" text="ASF" />
                <Button fx:id="buttonWMV" mnemonicParsing="false" onMouseClicked="#ConvertirWMV" prefHeight="83.0" prefWidth="84.0" text="WMV" />
                <Button fx:id="buttonAVI" mnemonicParsing="false" onMouseClicked="#ConvertirAVI" prefHeight="83.0" prefWidth="84.0" text="AVI" />
                <Button fx:id="buttonMP4" mnemonicParsing="false" onMouseClicked="#ConvertirMP4" prefHeight="83.0" prefWidth="84.0" text="MP4" />
                <Button fx:id="buttonMPEG" mnemonicParsing="false" onMouseClicked="#ConvertirMPEG" prefHeight="83.0" prefWidth="84.0" text="MPEG" />
                <Button fx:id="buttonALAC" mnemonicParsing="false" onMouseClicked="#ConvertirALAC" prefHeight="83.0" prefWidth="84.0" text="ALAC" />
                <Button fx:id="buttonMPC" mnemonicParsing="false" onMouseClicked="#ConvertirMPC" prefHeight="83.0" prefWidth="84.0" text="MPC" />
             </buttons>
             <effect>
                <Blend />
             </effect>
             <padding>
                <Insets right="10.0" top="10.0" />
             </padding>
          </ButtonBar>
          <HBox layoutX="46.0" layoutY="656.0" prefHeight="46.0" prefWidth="838.0">
             <children>
                <Label prefHeight="17.0" prefWidth="71.0" text="Message :" />
                <Label fx:id="IdCompte" prefHeight="17.0" prefWidth="593.0" text="Resultat" />
             </children>
          </HBox>
       </children>
     
     
    </AnchorPane>

    FXMLDocumentController.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
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package convertisseur;
     
    import java.awt.Desktop;
    import java.io.File;
    import java.net.URL;
    import java.util.List;
    import java.util.ResourceBundle;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.fxml.Initializable;
    import javafx.scene.Group;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.ListView;
    import javafx.scene.layout.HBox;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Circle;
    import javafx.stage.DirectoryChooser;
    import javafx.stage.FileChooser;
    import javafx.stage.Stage;
     
    /**
     *
     * @author soso
     */
    public class FXMLDocumentController implements Initializable  {
     
     
     
     
     
        @FXML
        private Label IdCompte;
     
     
        @FXML
        private ObservableList<String> listFichier = FXCollections.observableArrayList();
     
     
        @FXML
        private String DossierDestinataire;
     
        @FXML
        private String DossierDesFichiersConvertie;
     
        @FXML
        private Label label;
     
        @FXML
        private List<File> files;
     
        @FXML
        private ListView ListeViewDesFichiers;
     
     
        @FXML
        public String getDossier (){ //le dossier des fichiers convertie
        return DossierDesFichiersConvertie;
        }
     
        @FXML
        public String setDossier (String DossierDesFichiersConvertie){ // cette methode permet de modifier le dossier des fichiers converties
        this.DossierDesFichiersConvertie = DossierDesFichiersConvertie;
        return this.DossierDesFichiersConvertie;
        }
     
        @FXML
        private DirectoryChooser directoryChooser;
     
        @FXML
        private File selectedDirectory;
     
     
        @Override
        public void initialize(URL url, ResourceBundle rb) {
            // TODO
        }    
     
     
     
     
        @FXML
        public void CliqueDossierdesFichiersConvertire (){
           // cette methode pairmer de selectionner le dossier ou les fichiers convertire seront transferer.
             directoryChooser =
                    new DirectoryChooser();
                File selectedDirectory =
                        directoryChooser.showDialog(new Stage());
                if (selectedDirectory != null) {
                    selectedDirectory.getAbsolutePath();
     
                    System.out.println("..........."+selectedDirectory.getAbsolutePath());
     
     
                this.setDossier(selectedDirectory.getAbsolutePath()); // modifie le dossier des fichiers convertie.
                // en peu recuperer le dossier des resultat avec la methode getDossier();
     
    DossierDestinataire = selectedDirectory.getAbsolutePath(); //enregistre le dossier destinataitre dans la variable global.
     
     
     
     
                }
     
     
     
            }        
        @FXML
        public void parcourirLesFichiers (){ // methode pour selectionner les fichiers a convertires.
        System.out.println("test : methode pour selectionner les fichiers a convertire .");
     
     
     
      FileChooser fileChooser = new FileChooser();
        fileChooser.getExtensionFilters().add(
                new FileChooser.ExtensionFilter("fichiers", "*"
                        ));
     
     
        files = fileChooser.showOpenMultipleDialog(new Stage());
     
     
     
    //        System.out.println("____________"+files.get(1));
    if (files != null){
     
     
     
     
     
     
        int NombreDeFichiers = files.size();
     
        int i = 0;
     
        while (i< NombreDeFichiers){
    //    System.out.println(">>>>"+ files.get(i));
     
        /////////////////
    //System.out.println("||||||||||||||>"+files.get(i).getName());
     
     
    // ce code permet de recuperer le nom du fichier sans l'extention.
    String nomCourt = (files.get(i).getName() != null) ? files.get(i).getName().substring(0,files.get(i).getName().indexOf('.')) : "";
     
     
     
             ListeViewDesFichiers.getItems().add(nomCourt); //ceci est pour la COUCHE UI
     
     
    listFichier.add(files.get(i).toString()); // ceci permet de tous enregistrer dans "listFichier
            System.out.println("::::::::::::>"+files.get(i).getName());
     
            i++;
        }
    }
    else {
        System.out.println("il n y a pas de fichiers........");
    }
    //    System.out.println(">>>>"+ files  );
     
     
     
     
     
        }                
        /*
        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
    fileChooser.getExtensionFilters().add(extFilter);
    File file = fileChooser.showOpenDialog(new Stage());
    System.out.println(file);
     
    */
     
     
            public void ConvertirAPE () throws InterruptedException, Exception{ // cette methode est liaie a un bouton. cette methode permet de convertir un ou des 
                // fichier aux format APE
                System.out.println("test APE");
     
     
     
    System.out.println("Mon traitement");
     
          Convertions converteur = new Convertions();
     
     
     
     
     
    ///////////////////////
     for (int i=0;i<files.size();i++){
     
     
    System.out.println("->>>>>><<<<>>>>>"+DossierDestinataire+"\\"+listFichier.get(i));
     
            System.out.println("''''''''''''''''''''"+files.get(i).toString());
     
        converteur.MetodeConvertire("C:\\ffmpeg\\bin\\ffmpeg.exe", files.get(i).toString(), "C:\\Users\\soso\\Documents\\test\\b\\"+i+".mp4");
     
     
    }
     
     
     
     
     
     
    //      Process p = rt.exec("done"); 
     
    //   Process p = rt.exec("break on"); 
     //;;;;;;;;;;;;;;;
     ////////////////////////
     
     
     
     
     
     
     
                ////////////////
     
     
                //////////////
     
            }
     
     
     
     
            public void ConvertirCDA (){
                        System.out.println("test CDA");
            IdCompte.setText("fddsfdfds");
            }
     
            public void ConvertirWAV (){
     
                            System.out.println("test WAV");
            }
     
     
            public void ConvertirMP3 (){
                        System.out.println("test MP3");
            }
     
            public void ConvertirWMA (){
                        System.out.println("test WMA");
            }
     
            public void ConvertirAAC (){
                        System.out.println("test AAC");
            }
     
            public void ConvertirOGG (){
                        System.out.println("test OGG");
            }
     
            public void ConvertirREALAUDIO (){
                        System.out.println("test REALAUDIO");
            }
     
            public void ConvertirFLAC (){
     
                            System.out.println("test FLAC");
     
            }
     
            public void ConvertirMPC (){
     
                            System.out.println("test MPC");
     
            }
     
            public void ConvertirALAC (){
                            System.out.println("test ALAC");
     
            }
            public void ConvertirMPEG (){
                        System.out.println("test MPEG");
            }
     
            public void ConvertirMP4 (){
                            System.out.println("test MP4");
     
            }
     
            public void ConvertirAVI (){
     
                            System.out.println("test AVI");
     
            }
     
            public void ConvertirWMV (){
                        System.out.println("test WMV");
            }
     
            public void ConvertirASF (){
                        System.out.println("test ASF");
            }
     
            public void ConvertirREALMEDIA (){
                            System.out.println("test REALMEDIA");
     
            }
     
            public void ConvertirFLV (){
                            System.out.println("test FLV");
     
            }
     
            public void ControllerViderListe(){ // cette methode permet de vider la liste des fichiers a convertire.
     
                System.out.println("test cette methode permet de vide la lsite des fichiers a convertire");
     
     
     
    /*
                ListeViewDesFichiers.getItems().remove(1);
                ListeViewDesFichiers.getItems().remove(1);
                ListeViewDesFichiers.getItems().remove(1);
                
                ListeViewDesFichiers.getItems().remove(1);
                ListeViewDesFichiers.getItems().remove(1);
      */          
                /*
            listFichier.remove(true);
            ListeViewDesFichiers.getItems().removeAll(true);
            
            listFichier.setAll("dsfdf");
            */
     
     
     
     
     
     
        int z = 0;
        while (z< listFichier.size()){
        System.out.println(">>>>"+ listFichier.get(z));
     
        /////////////////
     
        ListeViewDesFichiers.getItems().remove(0);
     
        listFichier.remove(listFichier.get(z).toString());
     
    //         ListeViewDesFichiers.getItems().remove(listFichier.get(z).toString());
    //                 add(listFichier.get(i).toString()); //ceci est pour la COUCHE UI
    //listFichier.remove(listFichier.get(z).toString());
    //        add(listFichier.get(i).toString()); // ceci permet de tous enregistrer dans "listFichier
     
    ///////////////////
     
     
     
            z++;
        }
     
    }
     
     
     
     
            //fill.set(value);
     
     
     
     
            }// fin de la classe : Controlleur

    merci de votre aide.

  10. #10
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    Timeline n'est pas ce qu'il me faut car je souhaite un décompte de fichiers a convertire avec l’application

    genre 5 sur 5, 4 sur 5 , 3 sur 5 etc..

    donc Timeline n'est pas la solution.

  11. #11
    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
    Merci de ne pas créer une discussion inutile alors que la discussion initiale a déjà été déplacée au bon endroit. De même travaille un peu ton orthographe et ta grammaire si tu veux qu'on puisse comprendre correctement ton problème !

    Le problème ce n'est pas ton label, c'est ton traitement ! Il se déroule durant le JavaFX Application Thread, donc entre 2 affichages ! Donc tu as beau modifier ton label, tu ne verras pas le résultat avant la fin du traitement. Tu aurai eut exactement le même soucis en Swing puisque comme @joel.drigo te l'a explique, aucun affichage n'est fait durant le traitement.

    Donc tu dois utiliser un mécanisme quelconque pour faire une partie de ton traitement en tache de fond. Ca peut être un Thread, un ExecutorService, ca peut etre un Service/Task, bref n'importe quoi qui permet de faire le traitement dans un autre thread. Et tu peux faire remonter la valeur dans JavaFX via Platform.runLater(() -> myLabel.setText(text))) ou via les mécanismes propres a Service/Task (qui a la notion de progression ce qui permet d'animer une ProgressBar par exemple mais tu peux aussi changer la valeur d'un label via le monitoring de la propriété progress).
    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

  12. #12
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    c'est dur de résoudre ce problème.

    si j'ai bien compris je m'est un thread pour la méthode de conversion des des fichiers et mettre a l’intérieur de ce thread un 2 eme thread pour le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label.setText(""+decompte);
    c'est çà ?

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le second thread existe déjà : c'est celui de l'UI. Tu as juste à demander à exécuter la modification du texte sur ce thread. Avec Swing, ça se ferait avec javax.swing.SwingUtilities.invokeLater() et avec JavaFX, javafx.application.Platform.runLater().

    Par exemple, quelque chose avec une classe comme ça :

    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
     
    import javafx.scene.control.Label;
    import javafx.application.Platform;
    public abstract class Worker implements Runnable {
     
        private final Label label;
     
        public Worker(Label label) {
             this.label=label;
        }
     
        // appeller cette méthode dans la méthode run pour mettre à jour le texte
        protected void updateText(String text) {
             Platform.runLater(()-> label.setText(text)); // force l'exécution sur le thread de JavaFX 
        }
     
    }
    Et pour lancer le traitement des fichiers :
    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
     
    File[] files = ...
    new Thread(new Worker(label) {
     
         public void run() {
     
              // ici tu implémentes ta boucle de traitement de fichiers
              for(File file : files) {
     
                   updateText("Début traitement de " + file); // mise à jour du label 
                   processFile(file); // appel de la méthode qui fait le traitement du fichier (dans ce thread), ou directement ici le code du traitement
     
              }
     
              updateText("Traitement de tous les fichiers fini");
     
         }
     
    }).start();
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2012
    Messages : 109
    Points : 47
    Points
    47
    Par défaut MERCI
    merci infiniment pour votre aide

    enfin ca marche

    mes esque je peu avoir un petit explication par rapport a ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Platform.runLater(()-> IdCompte.setText(text));
    merci et encore merci de votre aide
    sans vous je n'aurais pas réussie a trouver la solution

    merci

  15. #15
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Platform.runLater(runnable);
    runnable doit être un instance de classe qui implémente l'interface java.lang.Runnable, un interface fonctionnelle, parce qu'elle a une seule méthode déclarée comme ça :
    On doit donc passer une instance d'une classe qui implémente au moins cette méthode. Comme l'interface est fonctionnelle, on peut utiliser une expression lambda au lieu d'une instance.
    Le ()-> IdCompte.setText(text) c'est une expression lambda qui correspond à la méthode demandée par l'interface.

    Avec une classe anonyme, on ferait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Platform.runLater(new Runnable() {
        public void run() {
              IdCompte.setText(text);
        }
    });
    ça revient au même fonctionnellement.

    Ce que fait cette méthode c'est demander l'exécution dans le thread de JavaFX. En gros, elle pose l'instance de Runnable sur une file d'attente, et le thread JavaFX va se réveiller de temps à autre, pour exécuter tout ce qui se trouve en file d'attente.
    Pour le détail, je ne connais pas assez JavaFX pour savoir si ça se réveille à intervalle régulier, lorsque la file contient un certain nombre de trucs en attente, sur un autre mécanisme dépendant d'autres comportements de JavaFX (rafraîchissement, traitement des événements, etc), c'est probablement une combinaison de tout ça avec un algorithme d'ordonnancement optimisé.
    La méthode runLater ne bloque pas le thread qui l'iinvoque qui continue sans attendre que s'exécute la méthode run() du Runnable (d'où son nom : run later, exécuter plus tard, plus tard donc pas tout de suite, sous entendu quand le thread JavaFX se réveillera pour le faire.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #16
    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
    Citation Envoyé par joel.drigo Voir le message
    Pour le détail, je ne connais pas assez JavaFX pour savoir si ça se réveille à intervalle régulier, lorsque la file contient un certain nombre de trucs en attente, sur un autre mécanisme dépendant d'autres comportements de JavaFX (rafraîchissement, traitement des événements, etc), c'est probablement une combinaison de tout ça avec un algorithme d'ordonnancement optimisé.
    En théorie le Thread FX est sensé réagir suffisamment rapidement pour que le taux de rafraîchissement de l'UI puisse tourner à 60FPS.
    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

Discussions similaires

  1. [AC-2003] Boucle For sur colonnes
    Par thebigrensky dans le forum VBA Access
    Réponses: 0
    Dernier message: 27/01/2010, 15h52
  2. Boucle FOR sur certaines colonnes
    Par coralie59 dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/02/2009, 11h54
  3. [BASH] boucle for sur des fichiers, recuperation du chemin ?
    Par zevince dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 13/11/2007, 10h47
  4. Boucle for sur fichiers sauf un !
    Par coincoin22 dans le forum Linux
    Réponses: 4
    Dernier message: 13/08/2007, 14h41
  5. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55

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