Bonjour à tous,
Je suis entrain de réaliser un programme en java. Le but de ce programme est de lire un fichier .txt ou chaque ligne contient des nombres réels. après on affiche ces points dans une fenêtre.
Si la ligne contient 4 nombres, on construit une droite qu'on dessine jusqu'au bord de la zone de dessin.
J'ai procéder comme cela:
D'abords, dans la classe DataPoints, je lis le ficher ligne par ligne. Si le fichier contient 2 valeurs, j'instancie un point, 4 valeurs j'instancie une droite sinon je mets en exception.
Chacun des points instanciés est ajouté au vecteur ArrayList.
Dans la Classe DessinPoints: lire les points et dessine un rectangle autours de ce point avec drawrect(). et puis dessiner les droites qui doivent s'étendre jusqu'au bord de la zone de dessin.
Après, on doit pouvoir redimentionner la fenêtre.
Le problème c'est que j'ai des erreurs qui se produisent après compilation.
Aidez-moi svp. Cela fait une semaine que je me prends la tête.
Voici le code:
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 package dataPoints; import geomD2.DroiteD2; import geomD2.PointsD2; import java.io.FileReader; import java.io.LineNumberReader; import java.util.ArrayList; import java.util.StringTokenizer; public class DataPoints extends ArrayList<ArrayList<PointsD2>>{ /** * */ private static final long serialVersionUID = 1L; double min_x, min_y, max_x, max_y; ArrayList <PointsD2> vectPoint; public DataPoints(String fichier){ LineNumberReader lecteurLignes = null; try{ lecteurLignes = new LineNumberReader (new FileReader(fichier)); String ligneTexte = null; vectPoint = new ArrayList<PointsD2>(); 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); new DroiteD2(Point,Point2); } } System.out.println(vectPoint); } catch(Exception e) { e.printStackTrace(); } min_max(); } private void min_max() { // trouver les coordonnÈes extrÍmes {min_x}, {max_x}, {min_y}, // {max_y} des points stockÈs dans le vecteur courant: je n'arrive pas } }
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 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 { /** * */ private static final long serialVersionUID = 1L; 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; } 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; @SuppressWarnings("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<listPts.size();i++){ ArrayList<PointsD2> ptLu = (ArrayList<PointsD2>)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)); } } } }Et les erreurs:
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 import javax.swing.JFrame; import dataPoints.DataPoints; import dataPoints.DessinPoints; 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); } }
java.lang.NumberFormatException: For input string: "import"[]
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.valueOf(Double.java:475)
at java.lang.Double.<init>(Double.java:567)
at dataPoints.DataPoints.<init>(DataPoints.java:30)
at Grapheur.main(Grapheur.java:9)
Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout: unknown constraint: center
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:446)
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:407)
at javax.swing.JRootPane$1.addLayoutComponent(JRootPane.java:514)
at java.awt.Container.addImpl(Container.java:1074)
at java.awt.Container.add(Container.java:959)
at javax.swing.JFrame.addImpl(JFrame.java:540)
at java.awt.Container.add(Container.java:927)
at Grapheur.main(Grapheur.java:14)
Merci Beaucoup.
Partager