Problème avec un code java

Forums OujdaCity Support Informatique Problème avec un code java

Ce sujet a 1 réponse, 0 participant et a été mis à jour par  ouafaei, il y a 6 ans et 4 mois.

Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #207009

    ouafaei
    Membre

    Bonjour à tous,

    Le but de ce programme est de lire un fichier .txt ou des valeurs sont stockées, et puis les stocker dans un arraylist.
    on lit le fichier ligne par ligne. s’il y a 2 valeurs, on construit un point. 4 valeurs sur une ligne, on construit une droite et sinon on doit afficher un message en disant veillez resaisir les valeurs. Après dans la classe DessinPoints, on doit lire ces valeurs pour dessiner des points ou des droites.

    j’ai fait ces codes. Mais, comme je suis débutante, je ne sais pas gérer les exceptions, ni utiliser la méthode drawline.
    je ne sais pas aussi comment exploiter la valable listpts qui se trouve dans DessinPoints.
    Comment on peut aussi redimentionner la fenêtre sans qu’on efface le contenu, càd les points et les droites dessinés

    Merci beaucoup.
    Voici le code.



    package dataPoints;
    import java.awt.*;


    import geomD2.DroiteD2;
    import geomD2.PointsD2;

    import java.io.FileReader;
    import java.io.LineNumberReader;
    import java.util.ArrayList;
    import java.util.StringTokenizer;

    import java.awt.event.*;

    public class DataPoints extends ArrayList>{
    double min_x, min_y, max_x, max_y;
    ArrayList vectPoint;
    public DataPoints(String fichier){
    LineNumberReader lecteurLignes = null;
    try{

    lecteurLignes = new LineNumberReader (new FileReader(fichier));
    String ligneTexte = null;
    vectPoint = new ArrayList
    ();
    while ((ligneTexte = lecteurLignes.readLine()) != null) {
    StringTokenizer st = new StringTokenizer(ligneTexte);

    if (st.countTokens() == 2) {
    //stoker les points dans le vecteur courant
    Double X = new Double(st.nextToken());
    Double Y = new Double(st.nextToken());
    PointsD2 Point = new PointsD2(X,Y);
    vectPoint.add(Point);
    }
    if (st.countTokens() == 4 ) {
    Double X = new Double(st.nextToken());
    Double Y = new Double(st.nextToken());
    PointsD2 Point = new PointsD2(X,Y);
    Double X1 = new Double(st.nextToken());
    Double Y1 = new Double(st.nextToken());
    PointsD2 Point2 = new PointsD2(X1,Y1);
    DroiteD2 Droite = new DroiteD2(Point,Point2);
    //vectPoint.(Droite);


    }
    }
    System.out.println(vectPoint);
    }
    catch(Exception e) { e.printStackTrace(); }
    min_max();
    }
    private void min_max() {
    // completer

    }
    }





    package dataPoints;
    import geomD2.DroiteD2;
    import geomD2.PointsD2;

    import java.awt.*;
    import java.util.ArrayList;

    import javax.swing.JComponent;
    import javax.swing.JPanel;



    public class DessinPoints extends JPanel {


    DataPoints listPts;
    int bord; // taille des bords
    int enveloppe; // dimension des rectangles


    public DessinPoints (DataPoints pts, int largeur, int hauteur, int bord, int enveloppe) {
    this.listPts = pts;
    this.bord = bord;
    this.enveloppe = enveloppe;
    Dimension tailleOriginal;

    }
    public void paintcomponent (Graphics g) {
    super.paintComponent(g);
    g.setXORMode(Color.RED);
    Dimension tailleSuivante = new Dimension (this.getSize()); //Affectation de la nouvelle taille de la fenêtre
    JComponent tailleOriginal = null;
    double factEchX = tailleSuivante.getWidth()/tailleOriginal.getWidth(); //calcule du facteur de l'échelle sur l'axe X
    double factEchY = tailleSuivante.getHeight()/tailleOriginal.getHeight(); //calcule de facteur de l'échelle sur l'axe Y

    for (int i=0;i ArrayList ptLu = (ArrayList)listPts.get(i); //Liste des point courants
    //Test si il a 1 ou 2 point pour l'affichage de ses dernier avec ou sans la droite
    if(ptLu.size()==1){
    //Affichage des points
    g.drawRect((int)(ptLu.get(0).getX().intValue()*factEchX),(int)(ptLu.get(0).getY().intValue()*factEchY),enveloppe,enveloppe);
    }
    if(ptLu.size()==2){
    int milieuPointX1,milieuPointY1,milieuPointX2,milieuPointY2; //Coordinées central des points pour l'affichage central de la droite

    //definition du milieu des points
    milieuPointX1 = ptLu.get(0).getX().intValue()-enveloppe/2;
    milieuPointY1 = ptLu.get(0).getY().intValue()-enveloppe/2;
    milieuPointX2 = ptLu.get(1).getX().intValue()-enveloppe/2;
    milieuPointY2 = ptLu.get(1).getY().intValue()-enveloppe/2;

    //Affichage des points
    g.drawRect((int)(milieuPointX1*factEchX),(int)(milieuPointY1*factEchY),enveloppe,enveloppe);
    g.drawRect((int)(milieuPointX2*factEchX),(int)(milieuPointY2*factEchY),enveloppe,enveloppe);

    //Création de la droite
    DroiteD2 droite = new DroiteD2 (ptLu.get(0),ptLu.get(1));
    //Affichage de la droite
    g.drawLine((int)(droite.getIntersectionX().intValue()*factEchX),0,0,(int)(droite.getIntersectionY().intValue()*factEchY));
    }
    }
    }





    }






    package dataPoints;
    import javax.swing.JFrame;

    public class Grapheur {
    public static void main(String[] args) {
    DataPoints listePts = new DataPoints ("fichier.txt");
    System.out.println(listePts);
    DessinPoints monGraphe = new DessinPoints(listePts,600,400,10,10);
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(monGraphe, "center");
    f.setTitle("Grapheur");
    f.setSize(400, 400);
    f.setVisible(true);
    }

    }


Affichage de 1 message (sur 1 au total)

Vous devez être connecté pour répondre à ce sujet.

SHARE

Problème avec un code java