Problème avec un code java
Forums › OujdaCity › Support Informatique › Problème avec un code java
- Ce sujet est vide.
-
AuteurMessages
-
décembre 15, 2011 à 7:53 #207009ouafaeiMembre
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ésMerci 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;
ArrayListvectPoint;
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;iArrayList 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);
}
}
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.