relire un fichier FileReader BufferedReader

relire un fichier FileReader BufferedReader - Java - Programmation

Marsh Posté le 09-09-2004 à 16:05:54    

bonjour!
savez vous comment faire pour relire entièrement un fichier que j'ai déjà lu entièrement avec  BufferedReader li = new BufferedReader(new FileReader(file));  
j'ai comme erreur : java.lang.NullPointerException
Faut t il utiliser une autre classe à accès direct?
merci

Reply

Marsh Posté le 09-09-2004 à 16:05:54   

Reply

Marsh Posté le 09-09-2004 à 16:07:56    

et file ? il sort d'ou ?
 
 
 
[dmc je sais]


Message édité par jagstang le 09-09-2004 à 16:08:08

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-09-2004 à 10:59:19    

mais la stacktrace complète.
je pense que ta variable file est null ... dans cette ligne, c'est la seule façon de générer une nullpointerexception
 
pour répondre à ta question, 2 solutions :  
 - recréer le FileReader
 - lors de la premiere lecture, faire un marck sur le reader tout au début de la lecture avec un 'readAheadLimit' assez grand et faire un reset() au moment où tu veux refaire la lecture. Mais ca doit être assez consomateur en mémoire : ca garde tout le contenu du fichier que tu lis en mémoire ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 10-09-2004 à 13:28:30    

Pour etre plus clair, je met mon code complet, un peu gros, j'espère que vous vous y retrouverez... ( tests3 ne sert à rien pour l'instant pas fini)
 
Lorsque je relis le fichier (reset() il lis la première ligne "==titre==" puis me dis qu'à la ligne while (!texte.equals(findelentete){ il y a nullpointerexception
 
code:
// programme permettant de visualiser des courbes en utilisant un kit téléchargeable sur internet à l'adresse http://jcckit.sourceforge.net dans un répertoire machin, il faut ensuite, pour que le compilateur javac trouve les nouvelles classes, utiliser cet instruction dans la fenetre Xterm export CLASSPATH=/homes/votrenom/chemindaacces/JCCKit/jcckit.jar:$CLASSPATH ou pour ne plus à avoir réutiliser cet export, vous pouvez rajouter ce CLASSPATH dans le bashrc.  
 
import javax.swing.*;
//import javax.swing.filechooser.*;
//import javax.swing.JOptionPane;
import javax.swing.JList;
import javax.swing.event.*;
 
import java.awt.geom.*;
 
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;
import java.awt.event.*;
 
//imprimer
import java.awt.print.PrinterJob;
import java.awt.print.*;
 
//import java.io.*;
import java.io.File;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
 
//import java.util.*;
import java.util.StringTokenizer;
import java.util.Properties;
import java.util.Vector;
 
import jcckit.data.DataPlot;
import jcckit.data.DataCurve;
import jcckit.data.DataPoint;
import jcckit.GraphicsPlotCanvas;
import jcckit.util.ConfigParameters;
import jcckit.util.PropertiesBasedConfigData;
import jcckit.transformation.CartesianTransformation;
import jcckit.plot.Legend;
 
 
class Logiciel12 extends JFrame implements ActionListener, ListSelectionListener, Printable{//ListSelectionModel {
 
    final int VAa = 50000; // taille tab de lecture
    final int VAo = 30;
    final int Ta = 50000; // taille tab de graphe
    final int To = 30;
 
    JFileChooser fc = new JFileChooser(); //fenetre de choix fichier
    File file;
 
    // ------------- interface utilisateur --------------
    // définition de la première ligne
    JPanel row0 = new JPanel();
    JLabel debutlabel = new JLabel("Bienvenue au LCP-GRAPHEUR : COURBES" );
     // définition de la première ligne bis
    JPanel row1b = new JPanel();
    JTextField nomfichiereditable = new JTextField();
    JButton okButton = new JButton("Choix du fichier" );
    JButton okButton2 = new JButton("validez" );
    // définition de la deuxième ligne
    JPanel row2 =  new JPanel();
    JButton colonne = new JButton(" Colonne " );
    JButton bloc = new JButton(" Bloc " );
    // définition de la deuxième ligne bis
    JPanel row2b =  new JPanel();  
    JPanel row2ab =  new JPanel();
    JLabel labelfonction = new JLabel("fonction(s)" );//, JLabel.RIGHT);
    JLabel labelbloc = new JLabel("fonction et bloc(s)" );//, JLabel.LEFT);
    //JLabel nbcLabel = new JLabel(" Numéros des fonctions", JLabel.RIGHT);
    JButton selectioncol = new JButton("Selectionnez" );
    JTextField  nbcourbe = new JTextField();//JTextField[]  nbcourbes = new JTextField[0];  
    JTextField  nbcourbes = new JTextField();
    // définition de la deuxième ligne bis
    JPanel row2bb =  new JPanel();
    JLabel blocLabel = new JLabel(" Numéros des blocs", JLabel.RIGHT);
    JTextField  blocde = new JTextField();
    JTextField  bloca = new JTextField();
    // définition de la quatrième ligne
    JPanel row4 = new JPanel();
    JTextArea fichierarea = new JTextArea(5, 25);
    JScrollPane scrollPane = new JScrollPane(fichierarea);
     // définition de la cinquième ligne
    JPanel row5 = new JPanel();
    JButton imprime = new JButton("Imprimez l'interface" );
    JButton reset = new JButton("Réinitialisez" );
    // ------------- fin interface utilisateur --------------
    Container pane = getContentPane();
 
    JList liste;  
    DefaultListModel listModel = new DefaultListModel();
    JList list = new JList(listModel);
    DefaultListModel list2Model = new DefaultListModel();
    JList list2 = new JList(list2Model);
    DefaultListModel list3Model = new DefaultListModel();
    JList list3 = new JList(list3Model);
 
    // analyse syntaxique lecture fichier
    String texte = ""; // lecture
    String affiche = ""; // sur textarea
    String it = ""; // mot "intermédiaire"
    String enteteputative = "";
    String debentete = "== titre ==";
    String finentete = "== debut ==";
    int a1 = 0;
    int b1 = 0;  
 
    // entete du fichier
    int ndim;
    int nbcol;
    int ind_x[] = {'0', '0', '0', '0'};
    String sind_x;
    int dim_x[] = {'0', '0', '0', '0'};  
    String label;//titre
    String tlabel[] = new String[4];//initialisation du tableau
 
    // probleme de memoire, choisir en fonction dimension 1 ou 2 du fichier une taille importante pour tplotabsc OU plotbloca
    double va[][] = new double[VAa][VAo];// tab 2 dim data
    double tplotabsc[] = new double[Ta];// val en abscisse
    int lgtplotabsc = 0;
    double tplotfonc[][] = new double[Ta][To];// val en ordonnées
    int lgtplotfonc = 0; // lg effective (differente de zero) du tab pour UNE dimension  
    int indcommenceun = 1;
    double plotbloca[][] = new double[Ta][To];//[3][10];//[Ta][To];
    double plotbloco[][] = new double[Ta][To];//[3][10];//[Ta][To]
 
    int a, de; // de col à col choix de la fonction
    int debloc, abloc; // choix bloc
    int k, i, j;// indice de boucle
    String valeur = ""; // sous chaine pour analyse synthaxique
 
    // coordonnées pour graphe
    double maxabsc = 0;  
    double minabsc = 100;
    double maxord = 0;
    double minord = 100;
 
    int jjj = 0;
    int jjjb = 0;
    DataPlot _dataPlot; // ensemble contenant plusieurs courbes
    DataCurve curve = new DataCurve("" );// ens points pour former une courbe
    GraphicsPlotCanvas plotCanvas;  
    double x; // coordonnées graphiques
    double y;
 
    Object choixcoloubloc;
    int tselectioncol[] = new int[100]; int vrailengthtselectioncol = 0;
 
    Frame frame = new Frame("graphe" );
    int resetvariable = 0;
 
     // ---------- lecture de l'entete du fichier ----------------------------
 
    public void tests(File f) throws IOException {
 
 BufferedReader li = new BufferedReader(new FileReader(f));
 
 // il faut reconnaitre d'abords == titre ==
 enteteputative = li.readLine();
 
 if (enteteputative.equals(debentete)) {
     System.out.println("titre conforme \n" + enteteputative);
     // affiche conformité et entete titre
 } else { System.out.println("titre non conforme \n" + enteteputative);
 }
 
 // connait pas le nb lignes on boucle tant que l'on ne lit pas == debut ==
 while(!texte.equals(finentete))
     {
  texte = li.readLine();
  //affiche = affiche + texte + "\n" + " " ;  
  //if (texte.equals(finentete)) { break;}
  if (!texte.equals(finentete)) {  
      affiche = affiche + texte + "\n" + " " ;}  
  else { break;}
  Traitement(texte);// appel fonction
  System.out.println(texte);
     }
 
   // probleme phiadia2D ecrire 2* == debut ==? c'est pourquoi utilisation de while  (2*)
 
 fichierarea.append(" "+ affiche); //fichierarea.setText(" "+ affiche);
 
 while(texte.equals(finentete)) {
      System.out.println(finentete);
      texte = li.readLine();
 }
 //okButton2.setEnabled(false);
    } // fin void tests
 
 // ---------- lecture de des nombres du fichier ----------------------------
 
    public void tests1() throws IOException { // lecture que des col sel
 
 BufferedReader li = new BufferedReader(new FileReader(file));
 
 // il faut reconnaitre d'abords == titre ==
 enteteputative = li.readLine();
 
 if (enteteputative.equals(debentete)) {
     System.out.println("titre conforme \n" + enteteputative);
     // affiche conformité et entete titre
 } else { System.out.println("titre non conforme \n" + enteteputative);
 }
     
 // connait pas le nb lignes on boucle tant que l'on ne lit pas == debut ==
 while(!texte.equals(finentete))
     {
  texte = li.readLine();//fichierarea.setText("aa"+texte);
  //affiche = affiche + texte + "\n" + " " ;  
  //fichierarea.setText(" "+ affiche);
  if (texte.equals(finentete)) { break;}
  System.out.println(texte);
     }
 
 // probleme phiadia2D ecrire 2* == debut ==? c'est pourquoi utilisation de while  (2*)
 
 while(texte.equals(finentete)) {
      System.out.println(finentete);
      texte = li.readLine();
 }
 // if (texte.equals(finentete)) {System.out.println(finentete);}
 //texte = li.readLine(); si il y a écrit une fois == debut ==
 
 while (texte != null){ // lire toutes les lignes
 
     texte = li.readLine(); // une ligne
     if (texte == null){ // pointer null
     break;
     }
     StringTokenizer st = new StringTokenizer(texte, " " );
     while (st.hasMoreTokens()) { // tant qu'il y a à lire sur la ligne
  //while (selectioncol[b1] != 0){ // tant que le tab a valeur != 0
  //while (dim_x[1] != nbcol){
  while (b1 != nbcol) { // nos colonnes utilisateurs commence à 1
      //System.out.println("vrailengthtselectioncol "+vrailengthtselectioncol);
      it = st.nextToken(); //  ici à zéro d'où !=
 
      if (b1 == 0) va[a1][b1] = Double.parseDouble(it); // tjs stochkée absc 0
 
      for (k = 0; k < vrailengthtselectioncol ; k++){
   //System.out.println("b1 "+b1+" tselectioncol[k] "+ tselectioncol[k]);
   if (b1 == tselectioncol[k]-1) {  
       va[a1][indcommenceun] = Double.parseDouble(it); //ttes absc, ord col selectionnée-1 car fichier commence à zéro et l'utilisateur à 1
       indcommenceun++; // inc slt si bonne col
       //System.out.println("b1 "+ b1+" tselectioncol[k] "+ tselectioncol[k]+ " a1 "+a1+" "+" indcommenceun "+indcommenceun+" "+va[a1][indcommenceun]);
   }
      }  
      b1++; // autre colonne suivante
   }// fin while b1 != nbcol
  //System.out.println("nb ligne dim "+ a1 +"  nb col "+ b1);  
  b1 = 0; // revient première colonne prog "0" pr utilisateur "1"
  indcommenceun = 1;
  a1++; // incremente ligne
  //}//  while dim_x[1 != nbcol
     } // fin while hasMoreToken
   
   } // fin while texte!=null
 
 //li.close(); // fermeture du bufferreader
   a1 = a1 - 1; // vérification
          //System.out.println(va[a1][b1]+it);  
   //okButton.setEnabled(false);
   //okButton2.setEnabled(false);// une fois utilisé, devient inutilisable
    }// fin tests2
 
     //--------------- analyse de l'entete et stockage des données --------
     public void tests2() throws IOException {  
 
     BufferedReader li = new BufferedReader(new FileReader(file));
 
 enteteputative = li.readLine();
 
 if (enteteputative.equals(debentete)) {
     System.out.println("titre conforme \n" + enteteputative);
     // affiche conformité et entete titre
 } else { System.out.println("titre non conforme \n" + enteteputative);
 }
     
 // connait pas le nb lignes on boucle tant que l'on ne lit pas == debut ==
 while(!texte.equals(finentete))
     {
  texte = li.readLine();//fichierarea.setText("aa"+texte);
  //affiche = affiche + texte + "\n" + " " ;  
  ////fichierarea.setText(" "+ affiche);
  if (texte.equals(finentete)) { break;}
  System.out.println(texte);
     }
 
 // probleme phiadia2D ecrire 2* == debut ==? c'est pourquoi utilisation de while  (2*)
 
 while(texte.equals(finentete)) {
      System.out.println(finentete);
      texte = li.readLine();
 }
 // if (texte.equals(finentete)) {System.out.println(finentete);}
 //texte = li.readLine(); si il y a écrit une fois == debut ==
 
 while (texte != null){ // lire toutes les lignes
 
     texte = li.readLine(); // une ligne
     if (texte == null){ // pointer null
     break;
     }
     StringTokenizer st = new StringTokenizer(texte, " " );
     while (st.hasMoreTokens()) { // tant qu'il y a à lire sur la ligne
 
  while (b1 != nbcol) { // nos colonnes utilisateurs commence à 1
      //System.out.println("vrailengthtselectioncol "+vrailengthtselectioncol);
      it = st.nextToken(); //  ici à zéro d'où !=
 
      if (b1 == 0) va[a1][b1] = Double.parseDouble(it); // tjs stochkée absc 0
 
      for (k = 0; k < vrailengthtselectioncol ; k++){
   //System.out.println("b1 "+b1+" tselectioncol[k] "+ tselectioncol[k]);
   if (b1 == tselectioncol[k]-1) {  
       va[a1][indcommenceun] = Double.parseDouble(it); //ttes absc, ord col selectionnée-1 car fichier commence à zéro et l'utilisateur à 1
       indcommenceun++; // inc slt si bonne col
       //System.out.println("b1 "+ b1+" tselectioncol[k] "+ tselectioncol[k]+ " a1 "+a1+" "+" indcommenceun "+indcommenceun+" "+va[a1][indcommenceun]);
   }
      }  
      b1++; // autre colonne suivante
   }// fin while b1 != nbcol
  //System.out.println("nb ligne dim "+ a1 +"  nb col "+ b1);  
  b1 = 0; // revient première colonne prog "0" pr utilisateur "1"
  indcommenceun = 1;
  a1++; // incremente ligne
     } // fin while hasMoreToken
   
   } // fin while texte!=null
 // li.close(); // fermeture du bufferreader
     } // fin tests3
 
    public void Traitement(String li) {  
 
 int pos = 0; // position du égale
 String spefi = ""; // champ spécifique de l'entete
 char c; // indices temporaire des ind_x et dim_x
 
 
 pos = li.indexOf("=" );
 
 if (pos != -1) {
 
     if (pos < li.length()) {
  int tailleli = li.length();// longueur de la ligne
  //System.out.println(tailleli);
  spefi = li.substring(0, pos-1);// sous chaine avant = ss espace
  //System.out.println(spefi);
  valeur = li.substring(pos+2, tailleli);//sous chaine ap=ssespac
  //System.out.println(valeur);
 
  if (spefi.equals("ndim" )) { // on a trouve ndim
      ndim = Integer.parseInt(valeur);// converti ssch droite en int
  }
 
  else if (spefi.equals("nbcol" )) {
      nbcol = Integer.parseInt(valeur);
  }
 
  else if (spefi.startsWith("ind_x" )) {  // ssch commence par "
      c = spefi.charAt(6);// recupere 7eme caractere 6+1
      int intc = (int)c;// converti en int
      intc = intc - 48; //char 'A';
      ind_x[intc] = Integer.parseInt(valeur);
      sind_x = Integer.toString(ind_x[intc]);
      //System.out.println("ind_x(c) "+ ind_x[intc]);
         }
 
  else if (spefi.startsWith("dim_x" )) {  
      c = spefi.charAt(6);
      int intc = (int)c;
      intc = intc - 48;
      dim_x[intc] = Integer.parseInt(valeur);
      //System.out.println("dim_x("+ c +" )"+"="+ valeur);
         }
 
  else if (spefi.equals("label" )) {
      label = valeur;
      //System.out.println("label "+ label);
  }
 
  else if (spefi.startsWith("label(" )) {
      c = spefi.charAt(6);
      int intc = (int)c;
      //System.out.println("c intc"+c+" "+intc);
      intc = intc - 48;
      //System.out.println("c= "+c+" "+intc);
      tlabel[intc] = valeur;
      //System.out.println("tlabel( "+ valeur);
  }  
       
  } // FIN IF LI.LENGTH
     } // FIN IF POS
 
 // cohérence de l'entête
 for (k = 0; k < 4; k++){
     if (((ind_x[k]== 0) && (dim_x[k]!= 0))||((ind_x[k]!= 0)  
           && (dim_x[k]== 0)))  
  System.out.println("L'entete de votre fichier est mal défini" );
 }
 
    } // fin Traitement de l'entete
 
 
 
    //   ================= Evenements =================================
 
    public void actionPerformed(ActionEvent event) {
 
  int colchoisi[] = new int[200]; // toutes col choisies
  int ncolchoisi = 0; // nb total de col choisies
  int jj = 0; int jjb = 0;
  int aa = 0;
  int bl = 0;
  int nbabsc = 0;
  int nbord = 0;
  //int index[] = new int[30];
  Object index[]= new Object[30];
  Object index2[]= new Object[30];
  Object source = event.getSource();
 
  // ------------------------
 if (source == okButton2){
 
     file = new File("/net.users/homes/"+ nomfichiereditable.getText().trim());  
     if (file.exists()){
        try {
     tests(file);
        }
        catch (IOException e) {
     System.out.println(e);
        } }  
    if (ndim == 1){
        for (k = nbcol; k > 2; k--){
     listModel.insertElementAt(new Integer(k), 1);
     list.setSelectedIndex(1);
     list.ensureIndexIsVisible(1);
        }
    }
    if (ndim == 2){
        for (k = nbcol; k > 2; k--){
     list2Model.insertElementAt(new Integer(k), 1);
     list2.setSelectedIndex(1);
     list2.ensureIndexIsVisible(1);
        }
         for (k = nbcol; k > 2; k--){
     list3Model.insertElementAt(new Integer(k), 1);
     list3.setSelectedIndex(1);
     list3.ensureIndexIsVisible(1);
        }
    }
 } // fin okButton2
 
 // ------------------------
       if (source == okButton){
 
    if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
        file = fc.getSelectedFile();  
        fichierarea.append("Opening: "+ file.getName()+ "\n" );
        if (file.exists()){
        try {
     tests(file);
        }
        catch (IOException e) {
     System.out.println(e);
        } }          
    } // fin showopen
     
    if (ndim == 1){
        for (k = nbcol; k > 2; k--){
     listModel.insertElementAt(new Integer(k), 1);
     list.setSelectedIndex(1);
     list.ensureIndexIsVisible(1);
        }
    }
    if (ndim == 2){
        for (k = nbcol; k > 2; k--){
     list2Model.insertElementAt(new Integer(k), 1);
     list2.setSelectedIndex(1);
     list2.ensureIndexIsVisible(1);
        }
         for (k = nbcol; k > 2; k--){
     list3Model.insertElementAt(new Integer(k), 1);
     list3.setSelectedIndex(1);
     list3.ensureIndexIsVisible(1);
        }
    }
       } // fin source == okButton
 
 // ------------------------
 
       if (source == selectioncol){
 
     if (ndim == 1){
  list2.setEnabled(false);
  list2.setOpaque(true);
  list3.setEnabled(false);
  list3.setOpaque(true);
  index = list.getSelectedValues();
  for (k = 0; k < index.length ; k++){
      tselectioncol[k] = ((Integer)index[k]).intValue();
  }
     } else if (ndim == 2){  
  list.setEnabled(false);
  list.setOpaque(true);
  index2 = list.getSelectedValues();
  for (k = 0; k < index2.length ; k++){
      tselectioncol[k] = ((Integer)index2[k]).intValue();
  }
     }
     //index[aa] = list.getSelectedIndex();
     //index  = list.getSelectedIndices();
     //fichierarea.append("tselectioncol[k] "+ tselectioncol[k]);
     
     for (j = 0; j < tselectioncol.length; j++){
   if (tselectioncol[j] != 0) vrailengthtselectioncol++;
      }
 
      //for (k = 0; k < vrailengthtselectioncol ; k++){
      //fichierarea.append(tselectioncol[k] + " " );}
 
     // -------------- lecture des points souhaités -------
     if (ndim == 1){
  try {tests1();} // methode suite lecture fichier que col selection
  catch (IOException e) {System.out.println(e);}
     }  
     if (ndim == 2){
  try {tests2();} // methode suite lecture fichier que col selection
  catch (IOException e) {System.out.println(e);}
     }
     // -----------------------------------------------
 
 //if (source == colonne){ //tselectioncol[k] doit etre connu  
     
      choixcoloubloc = colonne;
      de = Integer.parseInt("0"+ nbcourbe.getText());
      a = Integer.parseInt("0"+ nbcourbes.getText());
      nbcourbe.setText("" + de);
      nbcourbes.setText("" + a);
      //snbcol = Integer.toString(nbcol-1);
 
      // avertissement si en dehors, choisir la bonne colonne
      JOptionPane avert = new JOptionPane();
 
      //if ( (de < 2 || de > nbcol-1 || a < 2 || a > nbcol-1) ) {
 
      // ----- vérifier que les colonnes sélectionnées coérentes
 
     
      if (tselectioncol[0]< 2 || tselectioncol[0]> nbcol || tselectioncol[vrailengthtselectioncol-1]< 2 || tselectioncol[vrailengthtselectioncol-1]>nbcol){
   avert.showMessageDialog(null, "entrer des valeurs comprises entre 2 et nbcol", "Avertissement", JOptionPane.WARNING_MESSAGE);  
      }
   
      // ----- suivant la dimension du fichier nb valeur varient
 
      if (ndim == 1){
    nbabsc = dim_x[1];
    nbord = dim_x[1];
      }//fin if dim = 1    
   
      if (ndim == 2){
   nbabsc = dim_x[1]*dim_x[2];
   nbord = dim_x[1]*dim_x[2];
      }//fin if dim = 2
 
      if (ndim == 3){ // inutile
   nbabsc = dim_x[1]*dim_x[2]*dim_x[3];
   nbord = dim_x[1]*dim_x[2]*dim_x[3];
      }//fin if dim = 3
 
      // ------------- col des abscisses --------------
   
      for (k = 0; k < nbabsc ; k=k+2){//k=k+2 économie memoire
     
   for (j = 0;;){
       tplotabsc[aa] = va[k][j];
       //System.out.println("tplotabsc[] aa "+aa+" "+ tplotabsc[aa]);  
       break;
   }
   aa++;
      }
 
      for (k = 0; k < aa ; k++){
   if (tplotabsc[k] != 0) lgtplotabsc++;
      }
      System.out.println(" lgtplotabsc "+ lgtplotabsc);// 0  62 =63  
      aa = 0; // réutilisé
 
      //System.out.println(" de "+ de +" a "+ a);
 
      // ------------ col des ordonnées ----------------
 
      for (k = 0; k < nbord ; k=k+2){ // tes les abscisses pr fichier 2 dim dim(1)*dim(2)
   //for (j = de; j < a + 1; j++){  
   //for (j = 0; j < vrailengthtselectioncol; j++){ // tselectioncol.length; j++){
   //    i = tselectioncol[j]-1;// attention nos col(lecture fichier commenc à 0)
   for (j = 1; j < vrailengthtselectioncol+1; j++){  
       tplotfonc[aa][jj] = va[k][j];//stocke la bonnecol
       //System.out.println("tplotfonc[][] "
       //+ aa +" jj "+ jj +" "+ tplotfonc[aa][jj]);
       jj++; // autre colonnne System.out.println(" jj "+ jj);
   }
 
   aa++; // autre abscisse
   jjj = jj; // total colonne + 1
   jj = 0; // col retourne zero
 
      } // fin ttes les abscisses
 
      //System.out.println(" jjj "+ jjj);
 
      for (k = 0; k < aa ; k++){// sert à rien
   if (k != 0) lgtplotfonc++; // retire valeur égale zero
      }
 
      //System.out.println("tplotfonc[aa-2][de] "
      //+ (aa-1) +" "+ (i) +" "+ tplotfonc[aa-2][de]);
      //System.out.println("lgtplotfonc " + lgtplotfonc);
 
      //----------------- max et min pr graphe ---------------
 
      for (i = 0; i < lgtplotabsc ; i++){ // pas nbabsc car tab pas rempli dc 0 min
   if (tplotabsc[i] > maxabsc)  maxabsc = tplotabsc[i];  
   if (tplotabsc[i] < minabsc)  minabsc = tplotabsc[i];
      }
      //System.out.println(" ici minabsc "+ minabsc + " maxabsc "+ maxabsc +" "+ jjj);
 
      for (i = 0; i < lgtplotabsc ; i++){
    for (j = 0; j < jjj; j++){
        if (tplotfonc[i][j]> maxord) maxord = tplotfonc[i][j];
        if (tplotfonc[i][j]< minord) minord = tplotfonc[i][j];
        //System.out.println(" for minabsc "+ minabsc + " maxabsc "+ maxabsc);
    }
      }
      //System.out.println(" ici minord "+ minord +" maxord "+ maxord);
 
      nit();// appel methode pr nouvelle fen graphique jcckit
 
      //} // fin if source == colonne
       } // fin source == selectioncol
 
 //-------------------------
 if (source == bloc){ // pour réinitialiser la courbe
 
     choixcoloubloc = bloc;
     aa = 0;
     lgtplotabsc = 0;
     //fichierarea.append("de "+ tselectioncol[k] + "a " );
     // text bloc
     debloc = Integer.parseInt("0"+ blocde.getText());
     abloc = Integer.parseInt("0"+ bloca.getText());
     blocde.setText("" + debloc);
     bloca.setText("" + abloc);
 
     // text fonction, choisir une seule fonction
     de = Integer.parseInt("0"+ nbcourbe.getText());
     a = Integer.parseInt("0"+ nbcourbes.getText());
     nbcourbe.setText("" + de);
     nbcourbes.setText("" + a);
 
     if (ndim == 2){
  nbabsc = dim_x[2];  
  nbord = dim_x[1]*dim_x[2];
     }// fin if dim = 2
 
     // --------------------------- absc -----------
 
     for (i = debloc; i < abloc+1; i++){ // prends bloc choisis
  for (k = 0; k < nbabsc ; k++){ // prends ttes val de la dim 2
      for (j = 1;;){ // prends une valeur de la col 0
   plotbloca[aa][bl] = va[(k+1)*(i-1)][j];
   //System.out.println("ptb[] aa "+aa+" "+ plotbloca[aa][bl]);  
   break;
      }
      jjb = aa++;
  }
  aa = 0;
  bl++;
     }
 
      for (k = 0; k < jjb; k++){
   // for (j = 0;  ; ){
   if (plotbloca[k][0] != 0) lgtplotabsc++;
      }
      //System.out.println("lgtplotabsc "+ lgtplotabsc+ " "+ bl );  
 
      // --------------- max et min pr graphe ---------------
 
      for (i = 0; i < lgtplotabsc; i++){
   for (j = 0; j < bl ; j++){
       if (plotbloca[i][j] > maxabsc) maxabsc = plotbloca[i][j];  
       if (plotbloca[i][j] < minabsc) minabsc = plotbloca[i][j];
   }
   //System.out.println("tb[aa" );
      }
      //System.out.println("minabsc "+ minabsc+" maxabsc "+ maxabsc);
       
 
      aa = 0; // réutilisé
      bl = 0;
 
      // ------------ ordonnées ---------------
 
      for (i = debloc; i < abloc+1; i++){ // prends bloc choisis
  for (k = 0; k < nbabsc; k++){ // prends ttes val de la dim 2
      for (j = de;;){ // prends une valeur de la col 0
   plotbloco[k][bl] = va[(k+1)*(i-1)][j];// k+1 i-1  à cause zero
   //System.out.println("plotb[de][bl]" "+ plotb[de][bl]);  
   break;
      }
  }
  bl++;
      }
      jjjb = bl;
      //System.out.println("tplotfonc[aa-2][de] "
      //+ (aa-1) +" "+ (i) +" "+ tplotfonc[aa-2][de]);
      //System.out.println("lgtplotfonc " + lgtplotfonc);
 
      for (j = 0; j < nbabsc; j++){
   for (k = 0; k < jjjb; k++){
       if (plotbloco[j][k]> maxord) maxord = plotbloco[j][k];
       if (plotbloco[j][k]< minord) minord = plotbloco[j][k];
   }
      }
      //System.out.println("minord "+ minord +" maxord "+ maxord);
 
      nit();// appel methode pr nouvelle fen graphique jcckit
 
 }// fin if source == bloc
 
 // ------------------------
   
 if (source == imprime){ //
     PrinterJob printJob = PrinterJob.getPrinterJob();
     printJob.setPrintable(Logiciel12.this);
     if (printJob.printDialog()) {
  try {
      printJob.print();  
  } catch (Exception ex) {
      ex.printStackTrace();
  }
     }
 }
 // ------------------------
 if (source == reset){ // relecture de mon fichier
     
     try{ tests2();}//tests2();}
    catch (IOException e) {System.out.println(e); }
     resetvariable = 1;
     nit();  
 
 }// fin(source == reset)
 
 
     
    }//--------------- /////// fin methode actionPerformed()
 
    public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
        if (pi >= 1) {
    return Printable.NO_SUCH_PAGE;
 }
 //drawShapes();
 //Graphics2D g2 = (Graphics2D) g;
 //Graphics2D plotCanvas = (Graphics2D) g;
 
 final Dimension dimension = pane.getSize();
 final double scaleX = pf.getImageableWidth() / dimension.width;
 final double scaleY = pf.getImageableHeight() / dimension.height;
 final double scale = Math.min(scaleX, scaleY);
 final Graphics2D g2 = (Graphics2D)g;
 g2.translate(pf.getImageableX(), pf.getImageableY());
 //g2.scale(scale, scale);
 
 pane.paint(g2);
 //frame.paint(g2);
        return Printable.PAGE_EXISTS;
    }
 
    public void drawShapes(){
 
    }
   
    // ==========================================================-
//-----------------------------------------------------
      //   -----------  jcckit ------------------
    public void nit(){
 //Frame frame = new Frame("graphe" );
 JTextField autre = new JTextField("fichier "+ file.getName()+
       "   titre "+ label);
 //GraphicsPlotCanvas plotCanvas = createPlotCanvas();  
 plotCanvas = createPlotCanvas();  
 _dataPlot = new DataPlot();
 _dataPlot.addElement(new DataCurve("" ));
 plotCanvas.connect(_dataPlot);
 getContentPane().setLayout(new BorderLayout());
 frame.add(autre, BorderLayout.NORTH);
 frame.add(plotCanvas.getGraphicsCanvas(), BorderLayout.CENTER );
 
 //if (choixcoloubloc == colonne){  
 frame.add(createControlPanel(), BorderLayout.SOUTH);//}
 //else {frame.add(createControlPanel2(), BorderLayout.SOUTH);}
 
 frame.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent event) {
      frame.dispose();//System.exit(0);
  }  
 });
 frame.addWindowListener(new WindowAdapter() {
 public void windowDesactivated(WindowEvent event) {
     //_dataPlot.replaceElementAt(0, curve);
 }  
 });
 frame.setSize(500, 500);
 frame.setLocation(500, 100);
 frame.setVisible(true);
    }
 
    private Panel createControlPanel() {
 Panel controlPanel = new Panel();
 Button startButton = new Button("tracer" );
 
 startButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
 
      for (j = 0; j < jjj; j++){
   //System.out.println("ds createControlPanel boucle for de a" );
 
   DataCurve curve = new DataCurve(""+ tselectioncol[j]);// nouvelle courbe àchaque nouvelle colonne
   for (k = 0; k < lgtplotabsc; k++){// ajout ts les abcs
       x = tplotabsc[k];
       y  = tplotfonc[k][j];  
       curve.addElement(new DataPoint(x, y));
   }
 
   _dataPlot.addElement(curve);// ajout de cette courbe au plot
      }
 
  }// fin actionPerformed
 
  }); // fin startButton.addActionListener
 //startButton.setEnabled(true);???
    controlPanel.add(startButton);
    return controlPanel;
    }
 
    private Panel createControlPanel2() { // pour fichier 2 dimension
 Panel controlPanel = new Panel();
 System.out.println("on est ds createControlPanel2()" );
 Button startButton = new Button("tracer" );
 
 startButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
 
      for (j = 0; j < jjjb; j++){ // bloc
   System.out.println("ds createControlPanel bloc" );
   DataCurve curve = new DataCurve("" );// nouvelle courbe àchaque nouvelle colonne
 
   for (k = 0; k < lgtplotabsc; k++){//  
       x = plotbloca[k][j];
       y  = plotbloco[de][j];  
       curve.addElement(new DataPoint(x, y));
   }
 
   _dataPlot.addElement(curve);// ajout de cette courbe au plot
      }
  }// fin actionPerformed
  }); // fin startButton.addActionListener
 
    controlPanel.add(startButton);
    return controlPanel;
    }
 
    private  GraphicsPlotCanvas createPlotCanvas() {
 Properties props = new Properties();
 ConfigParameters config = new ConfigParameters(new PropertiesBasedConfigData(props));
 props.put("plot/legendVisible", "true" );
 props.put("plot/legend/curveTitleAttributes"," 0.01 " );// entre lignes legendes
 props.put("plot/legend/curveTitleDistance"," 0.02 " );// entre bord et lignes
 props.put("plot/legend/leftDistance", "0.015 " );
 props.put("plot/legend/symbolSize", " 0.0005" );
 props.put("plot/legend/boxWidth","0.15" );
 props.put("plot/legend/boxHeight"," 0.25" );
 //props.put("plot/curveFactory/curve/legendSymbol","" );
 props.put("plot/legend/title","Légendes" );
 
 //props.put("foreground", "#996699" );//0xffffff" );bleu
 props.put("background", "#FFFFFF" );//blanc "#00FFCC" );// jaune clair
 //props.put("plot/title", label);
 //props.put("defaultAxisParameters/ticLabelFormat", "%d" );
        //props.put("defaultAxisParameters/ticLabelAttributes/fontSize"," 0.03" );
        //props.put("defaultAxisParameters/axisLabelAttributes/textColor"," 0xa0" );
 //props.put("defaultAxisParameters/axisLabelAttributes/fontSize","0.04" );
        props.put("AxisParameters/axisLabelAttributes/fontStyle"," bold" );
 props.put("plot/coordinateSystem/xAxis/ticLabelFormat", "%d" );//0.05d" );
 props.put("plot/coordinateSystem/yAxis/ticLabelFormat", "%1.2f" );
 
 props.put("plot/coordinateSystem/xAxis/minimum", Double.toString(minabsc));
 props.put("plot/coordinateSystem/xAxis/maximum", Double.toString(maxabsc));
 props.put("plot/coordinateSystem/yAxis/minimum", Double.toString(minord));
 props.put("plot/coordinateSystem/yAxis/maximum", Double.toString(maxord));
 //props.put("plot/initialHintForNextCurve/position", "0 0.1" );
 
 props.put("plot/coordinateSystem/yAxis/axisLabel", "f(x)" );
 props.put("plot/coordinateSystem/xAxis/axisLabel", "x" );
 //System.out.println("ds creategraphics minord "+ minord+" maxord "+maxord);
 return new GraphicsPlotCanvas(config);
    }
    // ------- methode sert à rien mais doit etre defini pour implement
    public void valueChanged(ListSelectionEvent e) {
 //System.out.println("deeee" ); if (list.getSelectedIndex() == -1) {
            //No selection, disable fire button.
     okButton.setEnabled(false);
 if (okButton == e.getSource()){}    
    }
 
    //public void getLeadSelectionIndex(){
    //}  
 
    public  void constructeur(){
 setTitle("LCP GRAPHEUR" );
 setSize(400, 550);
 setLocation(100,100);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
 GridLayout layout = new GridLayout(7, 1, 1, 1);
       pane.setLayout(layout);
 
 FlowLayout layout0 = new FlowLayout(FlowLayout.CENTER);// titre
 row0.setLayout(layout0);
 row0.add(debutlabel);
 debutlabel.setBackground(new Color(250, 150, 020)); // rien
 pane.add(row0);  
 
 FlowLayout layout1b = new FlowLayout(FlowLayout.CENTER);//12,0);
 row1b.setLayout(layout1b);
 row1b.add(nomfichiereditable);
 row1b.add(okButton2);
 row1b.add(okButton);
 nomfichiereditable.setEditable(true);
 nomfichiereditable.setPreferredSize(new Dimension(110, 30));
 okButton.setFocusPainted(false);// cadre autour nom
 okButton.setBorder(BorderFactory.createRaisedBevelBorder());// relief
 okButton.setPreferredSize(new Dimension(110, 30));
 okButton.setBackground(new Color(100, 220, 240));
 okButton.setEnabled(true);
 okButton2.setFocusPainted(false);// cadre autour nom
 okButton2.setBorder(BorderFactory.createRaisedBevelBorder());// relief
 okButton2.setPreferredSize(new Dimension(50, 30));
 okButton2.setEnabled(true);
 okButton2.setBackground(new Color(100, 220, 240));
 pane.add(row1b);
 
 FlowLayout layout2ab = new FlowLayout(FlowLayout.CENTER);//1, 2, 5, 2);
 row2ab.setLayout(layout2ab);
 row2ab.add(labelfonction);row2ab.add(labelbloc);
 pane.add(row2ab);
 
 FlowLayout layout2b = new FlowLayout(FlowLayout.CENTER);//1, 2, 5, 2);
 row2b.setLayout(layout2b);
 listModel.addElement(new Integer(2));
 list = new JList(listModel);
        list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        list.setSelectedIndex(0);
        list.addListSelectionListener(this);
        list.setVisibleRowCount(6);
 list2Model.addElement(new Integer(2));
 list2 = new JList(list2Model);
        list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list2.setSelectedIndex(0);
        list2.addListSelectionListener(this);
        list2.setVisibleRowCount(6);
 list3Model.addElement(new Integer(2));
 list3 = new JList(list3Model);
        list3.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        list3.setSelectedIndex(0);
        list3.addListSelectionListener(this);
        list3.setVisibleRowCount(6);
        JScrollPane scrollliste = new JScrollPane(list);
 JScrollPane scrollliste2 = new JScrollPane(list2);
 JScrollPane scrollliste3 = new JScrollPane(list3);
 scrollliste.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 scrollliste2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 scrollliste3.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 scrollliste.setPreferredSize(new Dimension(55, 70));
 scrollliste2.setPreferredSize(new Dimension(55, 70));
 scrollliste3.setPreferredSize(new Dimension(55, 70));
 row2b.add(scrollliste);
 row2b.add(scrollliste2);
 row2b.add(scrollliste3);
 
 //row2b.add(nbcourbes);
 pane.add(row2b);
 
 // caractérisation de la deuxième ligne bisbis
 FlowLayout layout2bb = new FlowLayout(FlowLayout.CENTER,0, 2);//(1, 3, 5, 2);
 row2bb.add(selectioncol);
 selectioncol.setFocusPainted(false);
 selectioncol.setBorder(BorderFactory.createRaisedBevelBorder());
 selectioncol.setBackground(new Color(050, 240, 220));
 selectioncol.setPreferredSize(new Dimension(120, 30));
 //row2bb.setLayout(layout2bb);
 //row2bb.add(blocLabel);
 //row2bb.add(blocde);
 //row2bb.add(bloca);
 pane.add(row2bb);
 
 FlowLayout layout2 = new FlowLayout(FlowLayout.CENTER,0, 2);
 //row2.setLayout(layout2);
 //row2.add(colonne);
 //row2.add(bloc);
 colonne.setFocusPainted(false);// cadre autour nom
 colonne.setBackground(new Color(050, 240, 220));
 bloc.setFocusPainted(false);
 bloc.setBackground(new Color(050, 240, 220));
 colonne.setBorder(BorderFactory.createRaisedBevelBorder());// relief
 bloc.setBorder(BorderFactory.createRaisedBevelBorder());
 colonne.setPreferredSize(new Dimension(70, 30));
 bloc.setPreferredSize(new Dimension(70, 30));
 //pane.add(row2);
 
 FlowLayout layout4 = new FlowLayout(FlowLayout.CENTER,0, 2);
 row4.setLayout(layout4);
 row4.add(scrollPane);//fichierarea);
 fichierarea.setEditable(false);//zone text pr afficher slt
 scrollPane.setPreferredSize(new Dimension(170, 80));
 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
 //scrollliste.createV(JScrollPane.SCROLLBARS_ALWAYS);
 //scrollPane.addLayoutComponent(JScrollPane.ROW_HEADER);
 pane.add(row4);
 
 FlowLayout layout5 = new FlowLayout(FlowLayout.CENTER);
 row5.setLayout(layout5);
 row5.add(imprime);
 imprime.setBackground(new Color(050, 240, 220));
 imprime.setFocusPainted(false);
 imprime.setPreferredSize(new Dimension(135, 30));
 imprime.setBorder(BorderFactory.createEtchedBorder());
 row5.add(reset);
 reset.setBackground(new Color(050, 240, 220));
 reset.setFocusPainted(false);
 reset.setPreferredSize(new Dimension(135, 30));
 reset.setBorder(BorderFactory.createEtchedBorder());
 pane.add(row5);
 
 // instruction générale au conteneur
 pane.setBackground(Color.WHITE);
 setContentPane(pane);
 setVisible(true);
 
 // ajout des auditeurs
 okButton.addActionListener(this);
 okButton2.addActionListener(this);
 selectioncol.addActionListener(this);
 colonne.addActionListener(this);
 bloc.addActionListener(this);
 imprime.addActionListener(this);
 reset.addActionListener(this);
 
    }
 
      //  ======= Constructeur de fenetre principale ========================
     
     Logiciel12() {
        super();
 constructeur();
 
     }// fin du constructeur de la fenetre principale
 
     public static void main(String[] argv) {
 
 Logiciel12 ba = new Logiciel12();  
 
    } // fin main  
 
} // fin classe Logiciel10
 
fin code

Reply

Marsh Posté le 10-09-2004 à 13:30:26    

sympa le multi

Reply

Marsh Posté le 10-09-2004 à 15:13:44    

désolé, moi j'ai pas le courage de me taper 20 écrans de code pour un problème aussi basic ...
t'exagère un peu là ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 10-09-2004 à 15:20:23    

benou a écrit :

désolé, moi j'ai pas le courage de me taper 20 écrans de code pour un problème aussi basic ...
t'exagère un peu là ...


 
23 [:moundir]

Reply

Marsh Posté le 10-09-2004 à 15:33:10    


J'en ai 20 aussi, t'es en 1024x768 ?  :ange:

Reply

Marsh Posté le 10-09-2004 à 15:38:53    

1280/1024
 
mais c'est pas mon pc

Reply

Marsh Posté le 10-09-2004 à 15:41:13    

ah bon c'était que ce soit plus clair, il suffit de regarder que les méthodes intéressantes ..., je crois que j'ai trouvé ma stupide erreur, je maitrise pas encore le java..(pas dut out)......
texte (string) pointe vers null, je l'ai pas réinitialisé
1024*768 comprends pas? il ya plein termes que je ne comprends pas encore.

Reply

Marsh Posté le 10-09-2004 à 15:41:13   

Reply

Marsh Posté le 10-09-2004 à 15:41:52    

là on parle de résolution d'écran [:mlc]

Reply

Marsh Posté le 10-09-2004 à 15:43:34    

:lol:

Reply

Marsh Posté le 10-09-2004 à 16:45:22    


 
[:ban]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 10-09-2004 à 17:32:15    

han ! [:mlc]
 
y'en a qu'ont honte de rien [:w3c compliant]


Message édité par the real moins moins le 10-09-2004 à 17:32:31

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-09-2004 à 17:35:10    

je me suis arrete aux import [:ciler]


---------------
IVG en france
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed