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