Forum Clubic

Récupérer les paramètres en java

Bonjour. Je suis débutant en java et j’ai un peu de peine avec un programme. Donc je récupère les valeurs de type double x et y d’un fichier texte, je crée un point avec ces valeurs et ensuite je stuque le point crée dans une variable de type vector, que je dois utiliser pour créer un points graphiquement. Je traite ca dans la classe Datapoints et je comprends pas comment les passer à la classe DessinPoints pour les afficher ensuite. Merci pour votre aide. Voila les fichiers.

 
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import geomD2.*;
import dataPoints.*;
public class Grapheur {
    
    public static void main(String[] args) {	
	DataPoints listePts = new DataPoints("fichierPoints.txt");
	System.out.println(listePts);
	DessinPoints monGraphe = new DessinPoints(listePts,600,400,10,10);
	JFrame f = new JFrame();
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	//Fenetre f = new Fenetre();
	f.add(monGraphe,"Center");
	f.setTitle("Grapheur");
	f.setSize(400,400);
        f.setVisible(true);;
        
    }
}


package dataPoints;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

import javax.swing.*;
import geomD2.*;

public class DataPoints extends Vector<Vector<PointD2>> {   
    double min_x, min_y, max_x, max_y;
    Vector<PointD2> vectPoint;
    public DataPoints(String fichier) {
    	LineNumberReader lecteurLignes = null;		
    	try {
    		lecteurLignes = new LineNumberReader(new FileReader(fichier));
    		String ligneTexte = null;
    		 vectPoint = new Vector<PointD2>();
    		while ((ligneTexte = lecteurLignes.readLine()) != null) {
    			StringTokenizer st = new StringTokenizer(ligneTexte);
    			
    			
    			if (st.countTokens() == 2) {
    				//System.out.println(ligneTexte);
    				Double TempX = new Double(st.nextToken());
    				Double TempY = new Double(st.nextToken());
    				PointD2 Point = new PointD2(TempX,TempY);
    				// stocker les points dans le vecteur courant
    				vectPoint.add(Point);
    				
    				
    			}
    			if (st.countTokens() == 4) { 
    				// ? complÈter
    				Double TempX = new Double(st.nextToken());
    				Double TempY = new Double(st.nextToken());
    				PointD2 Point = new PointD2(TempX,TempY);
    				Double TempX2 = new Double(st.nextToken());
    				Double TempY2 = new Double(st.nextToken());
    				PointD2 Point2 = new PointD2(TempX2,TempY2);
    				DroiteD2 Droite = new DroiteD2(Point,Point2);
    				//vectPoint.(Droite);
    			}				
    		}
    		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
    }	
}


package dataPoints;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

import javax.swing.*;
import geomD2.*;

public class DessinPoints extends JPanel {
    DataPoints listePts;
    int bord;          // taille des bords
    int enveloppe;     // dimension des rectangles
    
    public DessinPoints(Vector pts,
		 int largeur, int hauteur,
		 int bord, int enveloppe) {	
	// Constructeur: 
	// {largeur} et {hauteur} permettent de fixer la taille du JPanel
	// avec la mÈthode {setPreferredSize()}
    	this.bord=bord;
    	this.enveloppe=enveloppe;
    }
    
    public void paintComponent(Graphics g) {
	super.paintComponent(g);
	g.setXORMode(Color.red);
	// lire les points de {listePts} et dessiner les rectangles et les droites
	// correspondants

    }
}

Edité le 06/12/2009 à 15:13

Merci d’utiliser la balise forum [code] pour que le code à peu près lisible.

Salut,

A ta place, je changerais le constructeur de DessinPoints en :

public DessinPoints(DataPoints pts, int largeur, int hauteur, int bord, int enveloppe) {

Ensuite dans le constructeur, tu rajoutes l’initialisation de ta variable d’instance listePts :

this.listePts = pts;

Tu peux maintenant utiliser ta liste de points dans le reste de la classe DessinPoints.

Merci beaucoup pour la réponse. ça marche maintenant. J’ai encore 2 questions.

  1. Comment on peut faire pour tracer la ligne avec drawLine et qu’elle ne se limite pas aux ces 2 points mais continue jusqu’à la fin de la fenêtre.

  2. Comment changer l’échelle de la fenêtre? J’ai les valeurs entre 0 et 20 et pour l’instant ils s’affichent tous en haut a gauche car l’échelle de la fenêtre est trop grande. Merci beaucoup pour les réponses.

Tu fais un dernier point qui a la meme valeur que celui d’avant mais avec x = la valeur max possible en X