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 :

Thread d'un diagramme


Sujet :

JavaFX

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut Thread d'un diagramme
    Bonjour à tous,

    Je cherche depuis 2 jours une manière de faire un diagramme dans lequel la ligne des résultats varie selon les résultats reçues mais je ne sais pas comment faire.
    J'ai lu qu'il faut utilisé la classe Task, j'ai essayé bcp de trucs mais c'est pas trop ça.
    J'ai le code d' itération uniquement que j'ai testé à partir du site d'oracle comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Task<Integer> task = new Task<Integer>() {
        @Override protected Integer call() throws Exception {
            int iterations;
            for (iterations = 0; iterations < 100000; iterations++) {
                if (isCancelled()) {
                   break;
                }
                System.out.println("Iteration " + iterations);
            }
            return iterations;
        }
    };
    Mais je vois pas trop comment l'utiliser dans mon cas, quelqu'un pourrait m'aider ou me mettre dans la voie svp... merci

    code du diagramme:
    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
     
     public void start(Stage stage) {
            stage.setTitle("Activités ascendant et descendant");
             final CategoryAxis xAxis = new CategoryAxis();
             final NumberAxis yAxis = new NumberAxis();
             xAxis.setLabel("Temps");
             yAxis.setLabel("Taille");
             final LineChart<String, Number> lineChart = new LineChart<>(xAxis, yAxis);
             lineChart.setTitle("Kb/sec");
             final XYChart.Series series = new XYChart.Series();
             series.setName("Download");
             Scene scene = new Scene(lineChart, 800, 600);
             stage.setScene(scene);
             stage.show();
             series.getData().add(new XYChart.Data(new SimpleDateFormat("HH:mm:ss").format(new Date()), i));
             Thread.sleep(1000);
             lineChart.getData().add(series);
             stage.setScene(scene);
             stage.show();
     
         }
    public static void main(String[] args) {
            launch(args);
     
        }

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    personne une idée ?? o_O

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Patience: vacances de part chez vous + pas grand monde qui fait du FX ici de toute manière :

    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
    package test;
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javafx.application.Application;
    import javafx.application.Platform;
    import javafx.concurrent.Service;
    import javafx.concurrent.Task;
    import javafx.scene.Scene;
    import javafx.scene.chart.CategoryAxis;
    import javafx.scene.chart.LineChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.stage.Stage;
     
    /**
     *
     * @author fabriceb
     */
    public class Main extends Application {
     
        final XYChart.Series series = new XYChart.Series();
     
        public void start(Stage stage) {
            stage.setTitle("Activités ascendant et descendant");
            final CategoryAxis xAxis = new CategoryAxis();
            final NumberAxis yAxis = new NumberAxis();
            xAxis.setLabel("Temps");
            yAxis.setLabel("Taille");
            final LineChart<String, Number> lineChart = new LineChart<>(xAxis, yAxis);
            lineChart.setTitle("Kb/sec");
            series.setName("Download");
            Scene scene = new Scene(lineChart, 800, 600);
            stage.setScene(scene);
            stage.show();
            lineChart.getData().add(series);
            stage.setScene(scene);
            stage.show();
            Service<Integer> service = new Service<Integer>() {
     
                @Override
                protected Task<Integer> createTask() {
                    return task;
                }
            };
            service.start();
        }
     
        public static void main(String[] args) {
            launch(args);
     
        }
        Task<Integer> task = new Task<Integer>() {
            @Override
            protected Integer call() throws Exception {
                int iterations;
                for (iterations = 0; iterations < 100000; iterations++) {
                    if (isCancelled()) {
                        break;
                    }
                    final Date date = new Date();
                    final int i = iterations;
                    Platform.runLater(new Runnable() {
                        @Override
                        public void run() {
                            series.getData().add(new XYChart.Data(new SimpleDateFormat("HH:mm:ss").format(new Date()), i));
                        }
                    });
                    Thread.sleep(1000);
                }
                return iterations;
            }
        };
    }
    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

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    O_O wow ! Un très grand merci

    Encore une dernière chose, j'aimerais que sur l'axe des X donc le Temps,
    qu'après un moment ça se décalle sinon la valeur en abscisse devient illisible à force que des données se rajoutent...

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    j'ai mis xAxis en variable global, il faut utilise sa méthode requestLayout() ??

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Pas du tout : tu changes la valeur de la borne minimale avec setLowerBound(), et tu fais pareil aussi avec les major ticks (me souvient pu c'est quoi la propriété).

    Éventuellement tu fais aussi un peut le nettoyage dans les data trop anciennes pour virer celles dont tu n'as plus besoin quand il y en a trop dans l'historique. Sinon c'est le Out of Memory assuré sur la longueur.
    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

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    oui mais le truc c'est que setLowerBound() est une méthode de la classe NumberAxis, mais pour l'axe des x j'utilise la classe CategoryAxis pour pouvoir mettre un string à savoir la date (l'heure actuelle) et il n'y a pas cette méthode, j'ai parcouru les méthodes que cette classe avait mais j'ai pas repéré celle dont j'ai besoin...

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    J'ai trouvé la solution à ce détail, j'ai mis une condition disant que si la taille des data's était supérieur à 20 alors de les supprimer avec en paramètre 0 et sa taille - 20.

    à savoir pour que ça intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (series.getData().size() > 20) {
                                series.getData().remove(0, series.getData().size() - 20);
                            }
    Donc en résumé je fais directement le nettoyage des data's comme tu l'as suggéré.



    Bonne journée et encore merci.

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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