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 :

Lier une ProgressBar à une méthode sans utilisation de Thread


Sujet :

JavaFX

  1. #1
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut Lier une ProgressBar à une méthode sans utilisation de Thread
    Ayant une méthode qui prend un peu de temps de calcul, je voudrai la lier à une ProgressBar mais je ne veux pas utiliser ma méthode dans un thread car elle met à jour l'interface graphique et appelle d'autres méthodes de ma classe principale, je ne sais quoi mettre comme argument dans la barre !?
    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
     
     
    @FXML
    private JFXProgressBar pbLoadImg;
     
     
    public void initialize(URL url, ResourceBundle rb) {
            //******** charger une image
            imgLoad.setOnAction((ActionEvent e) -> {
                //ma méthode de liaison chargement d'une image dans un imageView 
                loadImage();
                //Tracer l'histogramme grayscale de l'image
                showHistogram(image);
                //ma progressbar
                pbLoadImg.progressProperty().bind();
            });
    }
    J'ai besoin de lier la méthode de chargement d'image, qui ouvre un fileChooser et affiche l'image
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Un truc du genre :

    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
    import java.io.File;
    import java.util.Optional;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.ProgressBar;
    import javafx.scene.image.Image;
    import javafx.scene.layout.HBox;
    import javafx.stage.FileChooser;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
        private Stage stage;
     
        @Override
        public void start(Stage primaryStage) {
            this.stage = primaryStage;
            final ProgressBar pbLoadImg = new ProgressBar();
            pbLoadImg.setProgress(0);
            final Button imgLoad = new Button();
            imgLoad.setText("Load");
            imgLoad.setOnAction(event -> {
                final Optional<Image> image = loadImage();
                image.ifPresent(img -> {
                    // Already loaded (may happen on small images).
                    if (!img.isBackgroundLoading() || img.getProgress() == 1) {
                        pbLoadImg.setProgress(1);
    //                    showHistogram(image);                    
                    } else { // Still loading (may happen on big images).
                        pbLoadImg.progressProperty().bind(img.progressProperty());
                        img.progressProperty().addListener((observable, oldValue, newValue) -> {
                            if (newValue.doubleValue() == 1) {
                                pbLoadImg.progressProperty().unbind();
    //                            showHistogram(image);
                            }
                        });
                    }
                });
    //            pbLoadImg.progressProperty().bind();
    //            //Tracer l'histogramme grayscale de l'image
    //            //ma progressbar
            });
            HBox root = new HBox();
            root.getChildren().addAll(pbLoadImg, imgLoad);
            Scene scene = new Scene(root);
            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
        }
     
        final Optional<Image> loadImage() {
            FileChooser chooser = new FileChooser();
            final File file = chooser.showOpenDialog(stage);
            Optional<Image> result = Optional.empty();
            if (file != null) {
                result = Optional.of(new Image(file.toURI().toString(), true));
            }
            return result;
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            launch(args);
        }
    }
    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. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. Garder une div toujours visible (sans utiliser de frame).
    Par cyril44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/01/2010, 17h25
  3. Réponses: 20
    Dernier message: 16/11/2009, 23h04
  4. Réponses: 2
    Dernier message: 27/12/2007, 17h10
  5. Réponses: 6
    Dernier message: 27/05/2004, 10h41

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