1. #1
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut Appeler multiples output(resultat) qui les prend un variable à partir d'un autre class

    Bonjours; .....Comment faire appeler multiples output(resultat) qui les prend un variable à partir d'un autre class !!! ?? !!!

    j'ai cette classe qui lire des entiers (Long) séparés par virgule le variable n1 prend les entiers avant le virgule et le variable n2= prend les variables après le virgule ok

    Maitenant je doit appeler ces deux variable à partir d'un autre classe mais la probléme que la classe juste m'affiche les dernier entiers dans le fichiers !!!! par contre dans la classe originale tut marche bien ...

    Pré_Solution: utilisation d'un tableau ? c'est à dire un tableau de type Long prend les resultat du n1 et un autre tableau pour n2 et appeler ces deux tableau a partir de l'autre classe ...Mais comment faire ça !!?


    classe 01:

    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
     
    package application;
     
     
     
    	  import java.io.BufferedReader;
    	  import java.io.FileReader;
    import java.io.IOException;
     
    	  public class ValueReading {
     
    		 public long n1;
    		  public long n2;
     
     
    		  public ValueReading() throws NumberFormatException, IOException {
    	    //public static void main(String[] args) throws Exception {
    	      BufferedReader br = new BufferedReader(new FileReader("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"));
    	      String line = null;
    	      int i=0;
     
    	  while ((line = br.readLine()) != null) {
    		  if(line.trim().isEmpty()){
     
    			  //do nothing 
    		  } else {
     
    	  String[] values = line.split(",");
     
    		  String colonne1=values[i];
     
    		 String  colonne2=values[i+1];
     
     
    			 n1 = Long.valueOf( colonne1).longValue();
    		  n2 = Long.valueOf( colonne2).longValue();
     
     
    	//System.out.println("\ncolonne1="+n1);
     
    		// System.out.println("\ncolonne2="+n2);
     
    	      }}
     
     
     
    	//br.close();
    	   }
    	 }

    classe 02 : voir ligne 44

    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
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
        @Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
          long a,b,c;
            AltitudeReading  Rd =new AltitudeReading();
     
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
         Long c1,c2;
     
         ValueReading Vd= new ValueReading(); 
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
      c1=Vd.n1;
     
         c2=Vd.n2;
     
       System.out.print("\nc1 = "+c1);
        System.out.print("\nc2 = "+c2);
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series1.getData().add(new XYChart.Data(0, -2));
            series1.getData().add(new XYChart.Data(15, -4));
            series1.getData().add(new XYChart.Data(50, 0));
            series1.getData().add(new XYChart.Data(556, 5));
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Boule2");
            series2.getData().add(new XYChart.Data(473, 4));
            series2.getData().add(new XYChart.Data(562, 10));
            series2.getData().add(new XYChart.Data(821, 15));
            series2.getData().add(new XYChart.Data(109, 8));
     
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
            series3.getData().add(new XYChart.Data(22, 20));
            series3.getData().add(new XYChart.Data(333, 15));
            series3.getData().add(new XYChart.Data(111, 13));
            series3.getData().add(new XYChart.Data(909, 12));
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        public static void main(String[] args) {
            launch(args);
        }
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2008
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2008
    Messages : 726
    Points : 557
    Points
    557

    Par défaut

    Bonjour,

    mais la probléme que la classe juste m'affiche les dernier entiers dans le fichiers !!!!
    Peux-tu donner un exemple de résultat ?

    En fait, à chaque fois que tu boucles sur les lignes, tu écrase tes variables n1 et n2 et donc à la fin de la boucle celles-ci ont la dernière valeur lue.

    Tu pourrais utiliser un tableau double comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double[][] n;
    int i=0;
    while ((line = br.readLine()) != null) {
            if(!line.trim().isEmpty()){
            String[] values = line.split(",");
     
            n[i][0] = Long.valueOf( values[0]).longValue();
            n[i][1] = Long.valueOf( values[1]).longValue();
            i++;
        }
    }
    J'espère que cela t'auras aidé !


  3. #3
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    ça marchepas elle est plaine d'erreur !!
    mon essai me donne comme ça dans la classe originale :
    colonne1=0

    colonne2=-2

    colonne1=15

    colonne2=-4

    colonne1=50

    colonne2=0

    colonne1=556

    colonne2=5

    colonne1=473

    colonne2=4

    colonne1=562

    colonne2=10

    colonne1=821

    colonne2=15

    colonne1=109

    colonne2=8

    colonne1=22

    colonne2=20

    colonne1=333

    colonne2=15

    colonne1=111

    colonne2=13

    colonne1=909

    colonne2=12

    Mais lorse j'appelle cette classe àpartir d'un autre classe elle me donne comme ça juste les deux dernier output )
    colonne1=909

    colonne2=12

    donc il faut garder tout les valeurs de variable dans deux tableau !!!!

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Salut,

    Comme te l'as indiqué @francky74, tu stockes dans deux variables de classes, n1 et n2, les valeurs lues. Ces variables sont de type long et ne peuvent avoir à un instant t qu'une seule valeur. Comme ton fichier a manifestement plusieurs lignes, il reste dans ces variables après la lecture uniquement les valeurs lues de la dernière ligne.

    La solution de @francky74 est de stocker l'ensemble des valeurs de chaque variable dans un tableau à 2 dimensions, avec 2 valeurs par lignes. Cependant, il y a quelques soucis dans son exemple, et elle ne peut pas fonctionner directement.
    Aussi, il est necessaire de ne plus utiliser n1 et n2 (voire de les supprimer), mais de faire appel à n[no][0] pour n1 et n[no][1] pour n2, sachant que no est un numéro compris entre 0 et n.length,qu'il te faudra déterminer, à moins de parcourir l'ensemble des lignes du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double[][] n;
    int i=0;
    while ((line = br.readLine()) != null) {
            if(!line.trim().isEmpty()){
            String[] values = line.split(",");
     
            n[i][0] = Long.valueOf( values[0]).longValue();
            n[i][1] = Long.valueOf( values[1]).longValue();
            i++;
        }
    }
    Premier souci : le code se veut peut-être un exemple rapide, mais il n'est pas utilisable en l'état. La variable n remplaçant n1 et n2, il est nécessaire d'en faire une variable de classe bien sur. En revanche, éviter d'en faire des variables public que n'importe qui peut modifier n'importe comment.

    Deuxième souci : br et line ne sont pas déclarées ici, parce que l'exemple se veut probablement contextuel et complémentaire à ce que tu avais déjà écrit.
    Troisième souci : n est déclaré mais pas initialisé, donc le code ne compilera pas de toute manière. Et si tu en fais des variables de classe, ça provoquera une NullPointerException dès qu'on écrira dedans.

    Aussi faut-il se demander pourquoi un tableau de double pour y stocker des longs ?! Il faut le déclarer en long[][].
    Ensuite, le souci premier avec un tableau, c'est que pour l'initialiser, il faut en connaitre la taille, par avance, ce qui est problématique avec le type de boucle que tu utilises pour lire le fichier.
    Soit utiliser une List, éventuellement la convertir en tableau à la fin, soit utiliser Files.readAllLines(), qui retourne une liste de String, qui te restera à parcourir, à spliter, et à transformer en long, exactement comme déjà montré, ce qui, en plus te simplifiera la lecture du fichier en lui-même.

    Accessoirement, il y a également Files.lines() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n = Files.lines(Paths.get(iciLeCheminDeTonFichier))
    		  .map(line->Arrays.stream(line.split(",")).map(Long::parseLong).mapToLong(value->value).toArray())
    		  .toArray(long[][]::new); // je n'ai pas mentionné le traitement des exceptions/erreurs
    (j'en profite entre parenthèse pour une remarque sur le chemin de ton fichier ("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in") : éviter un accès direct à un fichier par son chemin en dur dans le code : tout le monde déjà n'a pas un lecteur D: (sans parler des OS où cette notion n'a aucun sens) ; tout le monde n'a pas nécessairement envie de créer une arborescence imposée aussi profonde (sans parler du fait qu'il s'agit visiblement du dossier de sources).


    De même, pourquoi écrire le compliqué Long.valueOf( values[0]).longValue();, alors que Long.parseLong(values[0]) fait la même chose, en plus court ?
    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.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    @Joel le principe de programme est le suivant :

    lire des entier de type (Long) stockée dans un fichier : le format des entier dans le fichier est le suivant :

    0,-2
    15,-4
    50,0
    556,5
    473,4
    562,10
    821,15
    109,8
    22,20
    333,15
    111,13
    909,12

    Bute01 :ce que je veux
    tableau n1 = 0 15 50 556 473 562 821 109 22 333 111 909
    tableau n=-2 -4 0 5 4 10 15 8 20 15 13 12

    Bute 02: Pourquoi j'utilise des variables publique ?

    car je veux appeler cette classe à partir d'une autre classe(courbe de temperature)et utiliser les entier qui déjà lu comme des cordonnée (abscisse et ordonné ) du courbe lors du clique sur
    une boutons qui fait le mise à jours de courbe


    Solution de Franky :j'ai pas compris sa solution mais je crois l'utilisation de deux tableau séparée est mieux car je doit parcourir les deux tableau de façon séparée dans la 2éme classe
    pour changer le abscisse et ordonnée du ''lineChart'' (courbe)


    Ce que je veux : Comment déclarer deux tableaux de type string (oublier le conversion de string to long: on va faire ça dans la 2émé classe apres remplir les 2 tableau dans la premiere classe)?


    String colonne1[] =values[i];

    String colonne2[] =values[i+1];

    je sais que ces deux ligne sont fausse (//syntaxe ) mais comment les corriger ?


    classe 01:

    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
     
     
    package application;
     
     
     
    	  import java.io.BufferedReader;
    	  import java.io.FileReader;
    import java.io.IOException;
     
    	  public class ValueReading {
     
    		 public long colonne1,colonne2;
    		 public int i;
     
     
     
    		  public ValueReading() throws NumberFormatException, IOException {
    	    //public static void main(String[] args) throws Exception {
    	      BufferedReader br = new BufferedReader(new FileReader("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"));
    	      String line = null;
    	      int i=0;
     
     
    	 while ((line = br.readLine()) != null) {
    	  if(line.trim().isEmpty()){
     
    			  //do nothing 
    	  } else {
     
    	 String[] values = line.split(",");
     
    		  String colonne1[] =values[i];
     
    		 String  colonne2[] =values[i+1];
     
     
     
     
     
    	//System.out.println("\ncolonne1="+colonne1);
     
    		// System.out.println("\ncolonne2="+colonne2);
     
    	      }}
     
     
     
    	//br.close();
    	   }
    	 }

    classe 02 : la courbe : voir la ligne 50

    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
     
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
        @Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
          long a,b,c;
            AltitudeReading  Rd =new AltitudeReading();
     
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
     
     
         ValueReading Vd= new ValueReading(); 
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
         String c1[]=Vd.colonne1;
     
         String c1[]=Vd.colonne2;
     
       //System.out.print("\nc1 = "+c1);
       // System.out.print("\nc2 = "+c2);
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series1.getData().add(new XYChart.Data(0, -2));
            series1.getData().add(new XYChart.Data(15, -4));
            series1.getData().add(new XYChart.Data(50, 0));
            series1.getData().add(new XYChart.Data(556, 5));
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Boule2");
            series2.getData().add(new XYChart.Data(473, 4));
            series2.getData().add(new XYChart.Data(562, 10));
            series2.getData().add(new XYChart.Data(821, 15));
            series2.getData().add(new XYChart.Data(109, 8));
     
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
            series3.getData().add(new XYChart.Data(22, 20));
            series3.getData().add(new XYChart.Data(333, 15));
            series3.getData().add(new XYChart.Data(111, 13));
            series3.getData().add(new XYChart.Data(909, 12));
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        public static void main(String[] args) {
            launch(args);
        }
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par Dubwa Voir le message
    lire des entier de type (Long) stockée dans un fichier : le format des entier dans le fichier est le suivant :
    Ça, on l'avait compris. Utilise plutôt le type long que Long (voire int vu les valeurs que tu as ça devrait être suffisant).

    Citation Envoyé par Dubwa Voir le message
    Bute 02: Pourquoi j'utilise des variables publique ?

    car je veux appeler cette classe à partir d'une autre classe(courbe de temperature)et utiliser les entier qui déjà lu comme des cordonnée (abscisse et ordonné ) du courbe lors du clique sur
    une boutons qui fait le mise à jours de courbe
    Peu importe. Pour y accèder, il vaut mieux une méthode, qui te permettra d'en contrôler l'accès (empêcher qu'on remplace le tableau, qu'on pourrisse les données...). En encore, vu que le but est uniquement de s'en servir dans une autre classe, pourquoi ne pas faire méthode statique de chargement dans l'autre classe ?

    Citation Envoyé par Dubwa Voir le message
    Solution de Franky :j'ai pas compris sa solution mais je crois l'utilisation de deux tableau séparée est mieux car je doit parcourir les deux tableau de façon séparée dans la 2éme classe
    pour changer le abscisse et ordonnée du ''lineChart'' (courbe)
    Peu importe. L'intéressant dans un tableau à 2 dimensions, c'est que tu garantis mieux le fait que chaque n1 à un n2 correspondant. Avec 2 tableaux, tu peux (plus) facilement te retrouver avec 2 tableaux de tailles différentes, ou un seul tableau et pas l'autre. Le mieux à la limite serait d'avoir un seul tableau de coordonnées, par exemple d'instances de classe XYChart.Data, puisque c'est de ça que tu as besoin au final.

    Citation Envoyé par Dubwa Voir le message
    Ce que je veux : Comment déclarer deux tableaux de type string (oublier le conversion de string to long: on va faire ça dans la 2émé classe apres remplir les 2 tableau dans la premiere classe)?
    Pourquoi stocker des String pour les convertir en long plus tard, si tu as besoin au final de long ? C'est absurde.

    Citation Envoyé par Dubwa Voir le message
    String colonne1[] =values[i];

    String colonne2[] =values[i+1];

    je sais que ces deux ligne sont fausse (//syntaxe ) mais comment les corriger ?
    On t'a déjà montré comment faire.

    Mais si je reprends tout ce qui a été dit et les nouvelles informations, je verrais bien juste une méthode statique qui retourne une liste de points :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static List<XYChart.Data> loadPoints(String filename) {
    		return Files.lines(Paths.get(filename))
    				    .map(line-> line.split(","))
    				    .map(coord-> new XYChart.Data(Long.parseLong(coord[0]), Long.parseLong(coord[1])))
    				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
    	}
    Et pour t'en servir dans ton autre classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValueReading.loadPoints().stream().forEach(point-> series1.getData().add(point));
    Tout simplement. Sans tortiller avec 2 tableaux de String à convertir en 2 tableaux de Long, à convertir en chépaquoi de XYChart.Data.
    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
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    hh oui çeci est plus logique mais comment integrer cette la votre dans ma classe !! (Joel tu sais que suis débutant :p hh je essaye de te comprende avec la traduction chaque fois de français à l'anglais... ''je comprend pas la français'' )
    ok comment intergrer la chemain de fichier !!!?


    essai : !!
    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
     
     
    package application;
     
     
     
    	  import java.awt.List;
    import java.io.BufferedReader;
    	  import java.io.FileReader;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.Collections;
    import java.util.stream.Collectors;
     
    import javafx.scene.chart.XYChart;
     
    	  public class ValueReading {
     
     
     
     
    		  public ValueReading() throws NumberFormatException, IOException {
    	    //public static void main(String[] args) throws Exception {
    	      BufferedReader br = new BufferedReader(new FileReader("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"));
     
     
     
    	      public static List<XYChart.Data> loadPoints(String filename) {
    	  		return Files.lines(Paths.get(filename))
    	  				    .map(line-> line.split(","))
    	  				    .map(coord-> new XYChart.Data(Long.parseLong(coord[0]), Long.parseLong(coord[1])))
    	  				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
    	  	}
     
    		  }

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Tu n'es pas loin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public class ValueReading {
     
    	      public static List<XYChart.Data> loadPoints(String filename) throws IOException {
    	  		return Files.lines(Paths.get(filename))
    	  				    .map(line-> line.split(","))
    	  				    .map(coord-> new XYChart.Data(Long.parseLong(coord[0]), Long.parseLong(coord[1])))
    	  				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
    	  	}
     
    }
    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
     /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
         // ça tu enlèves : String c1[]=Vd.colonne1;
     
         // ça tu enlèves : String c1[]=Vd.colonne2;
     
       //System.out.print("\nc1 = "+c1);
       // System.out.print("\nc2 = "+c2);
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            // ça tu enlèves (toutes les lignes qui concerne cette série, puisque maintenant tu vas les lire dans le fichier) et tu le remplaces :
            /*series1.getData().add(new XYChart.Data(0, -2));
            series1.getData().add(new XYChart.Data(15, -4));
            series1.getData().add(new XYChart.Data(50, 0));
            series1.getData().add(new XYChart.Data(556, 5));*/
            // et tu la remplaces par l'appel de loadPoints
            ValueReading.loadPoints( NOM_DU_FICHIER ).stream().forEach(point-> series1.getData().add(point));
    Et tu définis une constante dans la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Main extends Application {
     
        private static final String NOM_DU_FICHIER = "D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"; // ce serait mieux d'en faire un paramètre, ou en tout cas, de ne pas gérer ça en dur, comme je l'ai déjà dit
     
        @Override public void start(Stage stage) throws NumberFormatException, IOException {
           /*... etc */
        }
    Alors évidemment, si on regarde de plus près ton code, on s'aperçoit que tu as trois séries et pas qu'une. Soit tu fais trois fichiers, un par série, soit tu ajoutes dans le fichier une troisième information sur charque ligne, avec le numéro de série.
    Il y a une autre solution, plus bidouille, mais sans avoir à modifier la lecture et les fichiers : si tu es sûr que les données de la série 1 vont de la ligne 1 à la ligne 4, celles de la série 2 de la 5 à 8, puis la série 3 de la 9 à la 12, tu peux faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
            data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
            data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
            data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
    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.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    Bravooooo Brother !! ça marche Parfait ...juste dernier chose j'ai cette bouton là comment faire relire de fichier ou faire mise ajours manuel ou relucture de deonnée auto pour 5 min et appuis manuel en meme temps pour faire la mise à jours de courbe

    tout que tu as dit fait:
    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
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
    	  private static final String NOM_DU_FICHIER = "D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"; 
     
    	@Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
          long a,b,c;
            AltitudeReading  Rd =new AltitudeReading();
     
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
     
     
     
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
     
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            XYChart.Series series2 = new XYChart.Series();
     
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
            List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
            data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
            data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
            data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        public static void main(String[] args) {
            launch(args);
        }
    }
    aussi j'ai cette fonction au sommet que fait la mise ajours d'axe d'absisse donc je veux lier tout à la bouton Refresh

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Ce bouton-là, btn, je suppose, avec son handle d'action ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
    Et bien le code que pour charger la liste dans les séries, celui que je t'ai montré, et bien tu le colles dans une méthode à part, comme ça tu peux l'appeler à 2 endroits : là ou tu l'appelles maintenant, et dans le handler, à la place de System.out.println("Hello World!");.
    Comme tu vas devoir accèder aux variables series1, series2, series3 ailleurs que dans la méthode start, il faudrait les déclarer comme attributs de la classe.
    Il faut également penser à supprimer les données déjà présente.


    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
    public class Main extends Application {
     
          /** ... **/
          private XYChart.Series series1, series2, series3; // les séries du graphique, en attribut
     
     
    @Override 
        public void start(Stage stage) throws NumberFormatException, IOException {
           /*... etc */
     
            series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series2 = new XYChart.Series();
     
            series3 = new XYChart.Series();
            series3.setName("Boule3");
     
            refeshSeries(NOM_DU_FICHIER);
     
            /*...*/
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                   refeshSeries(NOM_DU_FICHIER);
                }
            });
     
        }
     
         private void refreshSeries(String filename) {
     
                   series1.getData().clear(); // on supprime toutes les données de series1
                   series2.getData().clear(); // on supprime toutes les données de series2
                   series3.getData().clear(); // on supprime toutes les données de series3
     
     
            List<XYChart.Data> data = ValueReading.loadPoints( filename ); // on lit les données
            data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
            data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
            data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
         }
     
     
    }
    Maintenant le bouton va faire exactement la même chose que ce qu'il se passe dans la construction.


    Et c'est là qu'il serait bien de revoir la gestion du chemin de fichier. Comme peut-être demander à l'utilisateur le nom du fichier.
    Et il va falloir revoir le traitement du nombre de données : j'imagine, qu'on va devoir pouvoir gérer un nombre de coordonnées par série quelconque. En conséquence le limt() et le skip() ne sont plus forcément une bonne idée (comme je l'avais déjà dit d'ailleurs).


    PS: les commentaires que je mets dans le code, c'est pour toi, pour que tu les lises pour comprendre à quoi sert toutes ces lignes. Ne les laisse pas toutes dans ton programme.
    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.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    comme ça !!! le bouton n'a fait rien !!!

    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
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
     
    	private XYChart.Series series1, series2, series3; // les séries du graphique, en attribut
    	private static final String NOM_DU_FICHIER = "D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"; 
     
    	@Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
            series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series2 = new XYChart.Series();
     
            series3 = new XYChart.Series();
            series3.setName("Boule3");
     
            refreshSeries(NOM_DU_FICHIER);
     
     
     
     
     
     
     
          long a,b,c;
     
          AltitudeReading  Rd =new AltitudeReading();
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
     
     
     
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
     
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Boule2");
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
            List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
            data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
            data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
            data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
     
                	try {
    					refreshSeries(NOM_DU_FICHIER);
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
     
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        private void refreshSeries(String nomDuFichier) throws IOException {
        	 series1.getData().clear(); // on supprime toutes les données de series1
             series2.getData().clear(); // on supprime toutes les données de series2
             series3.getData().clear(); // on supprime toutes les données de series3
     
     
      List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
      data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
      data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
      data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
    	}
     
    	public static void main(String[] args) {
            launch(args);
        }
    }

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Bah, forcément, si tu changes rien dans le fichier, tu ne risques pas de voir de changement.
    Remarque, il y a a peut-être besoin d'appeler une méthode pour forcer le rafraîchissement, mais je ne connais pas JavaFX. Il faudra que tu cherches de ce côté déjà. Mais tant que tu ne changes pas des données dans ton fichier, ça risque pas changer ton graphe.
    Ce que tu peux essayer déjà, c'est de commenter l'appel à refreshSeries dans le constructeur : normalement, à l'ouverture de la fenêtre, tes graphiques seront vides et dès que tu cliqueras sur le bouton, tu verras les données s'afficher. Si ce n'est pas le cas, alors c'est qu'il faut effectivement appeler une méthode pour demander un rafraîchessement de l'affichage.
    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.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    j'ai essayée de changer les valeurs dans le fichier mais lors de clique rien ne se passe !! il faut re-exécuter le programme de nouveau pour que pris de changement donc la bouton ne marche pas !!!

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Le "Hello world" s'affichait avant, quand tu cliquais sur le bouton ?
    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.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    oui s'affiche donc la probleme avec la methode refreshSeries !!

    regarde !

    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
     
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
     
    	private XYChart.Series series1, series2, series3; // les séries du graphique, en attribut
    	private static final String NOM_DU_FICHIER = "D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"; 
     
    	@Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
            series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series2 = new XYChart.Series();
     
            series3 = new XYChart.Series();
            series3.setName("Boule3");
     
           // refreshSeries(NOM_DU_FICHIER);
     
     
     
     
     
     
     
          long a,b,c;
     
          AltitudeReading  Rd =new AltitudeReading();
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
     
     
     
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
     
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Boule2");
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
            List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
            data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
            data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
            data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
     
                	try {
    					refreshSeries(NOM_DU_FICHIER);
    					   System.out.print("Hello Wold!");
     
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
     
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        private void refreshSeries(String filename) throws IOException {
        	 series1.getData().clear(); // on supprime toutes les données de series1
             series2.getData().clear(); // on supprime toutes les données de series2
             series3.getData().clear(); // on supprime toutes les données de series3
     
     
      List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
      data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
      data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
      data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
    	}
     
    	public static void main(String[] args) {
            launch(args);
        }
    }

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Ah, bah, oui, je n'avais pas vu dans ton code : tu n'as pas fait ce que j'ai dit !

    Il faut remplacer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Boule2");
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
    par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series2 = new XYChart.Series();
            series2.setName("Boule2");
            XYChart.Series series3.setName("Boule3");
    Pas faire les deux. Forcément, tu modifies dans le bouton des séries qui ne sont pas dans le graphe. Aucune chance de les voir.
    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.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    Hurraaaaay !! hh ça marche

    voilà :

    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
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
     
    	private XYChart.Series series1, series2, series3; // les séries du graphique, en attribut
    	private static final String NOM_DU_FICHIER = "D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"; 
     
    	@Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
            series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series2 = new XYChart.Series();
     
            series3 = new XYChart.Series();
            series3.setName("Boule3");
     
            refreshSeries(NOM_DU_FICHIER);
     
     
     
     
     
     
     
          long a,b,c;
     
          AltitudeReading  Rd =new AltitudeReading();
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
     
     
     
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
     
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
          //  XYChart.Series series1 = new XYChart.Series();
          //  series1.setName("Boule1");
     
            //XYChart.Series series2 = new XYChart.Series();
           // series2.setName("Boule2");
          //  XYChart.Series series3 = new XYChart.Series();
          //  series3.setName("Boule3");
     
     
     
     
     
            List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
            data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
            data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
            data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
     
                	try {
     
    					refreshSeries(NOM_DU_FICHIER);
    					 //  System.out.print("Hello Wold!");
     
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
     
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        private void refreshSeries(String filename) throws IOException {
        	 series1.getData().clear(); // on supprime toutes les données de series1
             series2.getData().clear(); // on supprime toutes les données de series2
             series3.getData().clear(); // on supprime toutes les données de series3
     
     
      List<XYChart.Data> data = ValueReading.loadPoints( NOM_DU_FICHIER ); // on lit les données
      data.stream().limit(4).forEach(point-> series1.getData().add(point)); // première série (limit donne le nombre d'éléments à parcourir)
      data.stream().skip(4).limit(4).forEach(point-> series2.getData().add(point)); // deuxième série (skip donne le nombre d'éléments qu'on "saute", qu'on ignore
      data.stream().skip(8).limit(4).forEach(point-> series3.getData().add(point)); // troisième série
     
     
    	}
     
    	public static void main(String[] args) {
            launch(args);
        }
    }
    juste dernier chose au sommet de code ligne 49 ; j'ai appler une classe AltitudeReading(); dont laquelle elle fait la lecture de fichier que as juste les données l'absisse (sans ordonnée )
    et calcule le min et max pour faire le changer dans l'axe d'absiscce Voila
    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
     
    package application;
     
     
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class AltitudeReading {
     
    	public long minVal= Long.MAX_VALUE;
    	public long maxVal= Long.MIN_VALUE;
    	public long pas=0;
    	public  AltitudeReading() {
     
     
    	  String FILENAME = "D:\\Doc\\java\\eq\\jh\\src\\jh\\altitude.in";
     
    	//public static void main(String[] args) {
     
    		try (BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {
     
    			String sCurrentLine; 
    			long n; 
    			//long maxVal = Long.MAX_VALUE;
    		      // long minVal = Long.MIN_VALUE; 
    		       long somme = 0; 
    		    //   long pas = 0; 
    		       int j = 0;
     
     
    			while ((sCurrentLine = br.readLine()) != null) {
     
    				 n = Long.valueOf( sCurrentLine).longValue();
     
    				long array[]= {n}; 
     
    					  for(int i = 0; i < array.length; i++){
    						   j++;
     
    					         if(array[i] < minVal)
    					        	 minVal = array[i];
    					         if(array[i] > maxVal)
    					        	 maxVal = array[i];
    					          somme = somme+array[i];
     
    					        //  pas=somme/38;
    					          pas=maxVal/10 ;
     
    					       }
     
    			}
     
    			  // System.out.print("\nValeur minimale = "+maxVal);
    		       //System.out.print("\nValeur maximale = "+minVal);
    		       //System.out.print("\nLa somme = "+somme);
    		      // System.out.print("\nLe nombre de valeurs = "+j);
    		     //  System.out.print("\nLe pas = "+pas);
     
     
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	//}
     
     
     
    }}
    donc je veux que cette classe fait la lecture des abscisse de meme fichier et pas extraire manuellement les abscisse dans autre fichier !!!

  18. #18
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Tu as une méthode ValueReading.loadPoints(nom de fichier) qui permet de charger une liste de coordonnées. Sur une liste, on peut appeler un stream : je t'ai montré comment l'utiliser, avec forEach, pour ajouter toutes ces coordonnées à une série d'un graphe.

    Pour obtenir le stream donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueReading.loadPoints( NOM_DE_FICHIER ).stream();
    ;

    On peut se servir de ce stream pour plein de choses. Par exemple, si on écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueReading.loadPoints( NOM_DE_FICHIER ).stream().map(XYChart.Data::getXValue);
    on obtient un nouveau stream qui ne contient que les x des XYChart.Data.

    Et si on appelle sur ce stream la méthode max(un comparator), on peut obtenir la plus grande des valeurs de ce stream, ce que tu cherches à obtenir. La méthode prend un Comparator en entrée, qui permet d'indiquer la relation d'ordre qui permet de dire lequel est le plus grand entre 2 valeurs. Toi, tu veux le plus grand long, au sens naturel du terme. On peut obtenir le comparateur correspond à l'ordre naturel par : Comparator.naturalOrder(). Enfin, comme un stream peut être vide, on obtient pas directement le max, puisqu'il peut ne pas y en avoir, mais un Optional<Long>. Pour obtenir directement le max, on peut utiliser la méthode orElse(long) qui permet d'indiquer la valeur par défaut qu'on utiliserait s'il n'y a avait pas de données dans la liste :

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long max = ValueReading.loadPoints( NOM_DE_FICHIER ).stream().map(XYChart.Data::getXValue).max(Comparator.naturalOrder).orElse(0L);
    Attention, cette ligne donne le max de l'ensemble des données des trois séries en même temps. Toi tu veux le max de la première à part, celui de la deuxième à part, celui de la troisième à part.
    Et bien, on peut utiliser exactement la même chose que ce qu'on a utiliser pour remplire le graphe : le skip et le limit.

    Et pour le min, c'est aussi simple, il y a une méthode min(Comparator) dans la classe Stream.
    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.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    UUA
    Inscrit en
    mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2017
    Messages : 82
    Points : 27
    Points
    27

    Par défaut

    nn je veux le valeur maximale de valeur d’abscisse et minimale de valeurs d'abscisse
    exemple
    si le fichier a les valeur suivant :

    0,-2
    15,-4
    50,0
    556,5
    473,4
    562,10
    821,15
    109,8
    22,20
    333,15
    111,13
    909,12
    max de valeur d’abscisse = 909
    min de valeur d’abscisse =0
    pas = 909/10 =90 // pas ou saut sur l'axe d'absicce

    Pourquoi faire ça ??

    pour que l'axe d’abscisse de la courbe soit variable et compatibles avec les valeurs de la courbe

    ou je doit changer ça ?

    Normalement dans :

    final NumberAxis xAxis = new NumberAxis(a, b, c)// a correspand à min ; b correspand à max ; c correspand au pas de courbe

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    9 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 9 853
    Points : 24 192
    Points
    24 192
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par Dubwa Voir le message
    nn je veux le valeur maximale de valeur d’abscisse et minimale de valeurs d'abscisse
    Oui, et getXValue() c'est bien l'abscisse du point. Donc tu as moyen d'obtenir le max et le min des abscisses. Et par extrapolation, tu pourrais facilement obtenir le max et le min des ordonnées.

    Citation Envoyé par Dubwa Voir le message
    ou je doit changer ça ?

    Normalement dans :

    final NumberAxis xAxis = new NumberAxis(a, b, c)// a correspand à min ; b correspand à max ; c correspand au pas de courbe

    Si tu regardes la javadoc de la classe NumberAxis, tu verras qu'il y a une méthode setLowerBound et une méthode setUpperBound. Ces méthodes te permettent de changer respectivement le min et le max.

    Donc maintenant que je t'ai donné un moyen d'obtenir le max et le min, et que tu sais comment changer les valeurs dans l'instance de NumberAxis, il te suffit d'avoir accès à la variable xAxis pour changer les valeurs. Pour ce faire, c'est exactement pareil que ce que je t'ai montré pour series1, series2 et series3 : en faire un attribut.
    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.

Discussions similaires

  1. Macro qui met à jour un Workbook à partir d'un autre
    Par Sanny80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/11/2009, 09h31
  2. Réponses: 1
    Dernier message: 14/08/2009, 08h50
  3. Appel d'interface a partir d'une autre classe
    Par harris_macken dans le forum Débuter
    Réponses: 1
    Dernier message: 20/07/2009, 15h31
  4. Réponses: 3
    Dernier message: 01/02/2009, 00h05
  5. appel d'une autre frame à partir d'une autre classe
    Par oceane751 dans le forum AWT/SWING
    Réponses: 18
    Dernier message: 19/01/2008, 06h41

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