ifproject - implémentation d'un Web Service financier et du client J2ME correspondant
d. Les graphiques
Code relevant de l’affichage des courbes et des curseurs

Nous donnons ci-dessous le listing du code de la méthodes paint() à laquelle est confiée l’affichage des graphiques. Nous commenterons certains points dans les 2 paragraphes suivants.


	protected void paint(Graphics g) {
	
		/////////////////////////////////
		// affichage de la grille

		if(imgGrille == null) this.initialiseGrille();
		g.drawImage(imgGrille, 0, 0, Graphics.TOP|Graphics.LEFT);

		/////////////////////////////////

		// dessin de la courbe des cours

		N = cours.length;
		double[] valeursCours = cours;
		double[] bornesCours = this.getBornesCours(valeursCours);
		this.valGraphMax = bornesCours[1] + 0.1*(bornesCours[1]-bornesCours[0]);
		this.valGraphMin = bornesCours[0] - 0.1*(bornesCours[1]-bornesCours[0]);


		// calcul des unités
		double deltaCours = valGraphMax - valGraphMin;
		double u1 = wg/(N-1);
		double v1 = hg1/deltaCours;

		/////////////////////////////////
		// dessin de la courbe historique

		g.setColor(0, 0, 255);
		for(int i = 0; i < N-1; i++){
			int x1 = (int)(marge + i*u1);
			int y1 = - (int)((valeursCours[i]-valGraphMin)*v1) + marge + (int)hg1 ;
			int x2 = (int) (marge + ((i+1)*u1));
			int y2 = - (int)((valeursCours[i+1]-valGraphMin)*v1) + marge +
			(int)hg1 ;
			g.drawLine(x1, y1, x2, y2);
		}
		
		
		/////////////////////////////////
		// dessin de l’histogramme des volumes;
		
		if(this.volumes != null && this.volumes.length != 0){
		int[] valeursVolume = this.volumes;
		int[] bornesVolume = this.getBornesVolume(valeursVolume);
		double delta = (bornesVolume[1]-bornesVolume[0])
		/this.getOrdreGrandeur((bornesVolume[1]-bornesVolume[0]));

		double v2 = hg2/delta;
		g.setColor(0, 0, 255);

		for(int i = 1; i < N-1; i++){
			int x2 = (int)(marge + (i*u1));
			double val = valeursVolume[i]
			/this.getOrdreGrandeur(bornesVolume[1]-bornesVolume[0]);
			int hHisto = (int)(val*v2);
			int lHisto = 1;
			int y2 = (int)(2*marge + hg1 + hg2 - hHisto);
			g.fillRect(x2 , y2, lHisto, hHisto);
		}
		} // fin dessin histogramme des volumes

 

		// dessin des curseurs
		g.setColor(153, 153, 153);
		int xCurseur = marge + (int)(iCurseur*u1);
		g.drawLine(xCurseur, marge+1, xCurseur, marge + hg1-1);
		if(this.volumes != null && this.volumes.length != 0){
			g.drawLine(xCurseur, 2*marge + hg1 +1, xCurseur, marge + hg1 + hg2 -1);
		}

 

		// écriture des valeurs

		g.setColor(0, 0, 0);
		int hf = g.getFont().getHeight();
		g.drawString(this.code, xv, yv, Graphics.TOP|Graphics.LEFT);
		g.drawString(dates[iCurseur], xv + (int)wg/2, yv, Graphics.TOP|Graphics.LEFT);
		g.setColor(0, 0, 255);
		g.drawString("" + cours[iCurseur], xv + 50, yv + hf, Graphics.TOP|Graphics.LEFT);
		g.setColor(0, 0, 0);
		if(this.volumes != null && this.volumes.length != 0){
			g.drawString("" + volumes[iCurseur], xv + 50, yv + 2*hf, Graphics.TOP|Graphics.LEFT);

		}

	}
	
	public void initialiseGrille(){
		w = this.getWidth();
		h = this.getHeight();

		// en % occupation relative de l’espace
		marge = (int) (0.02* h);
		
		// largeur des graphiques et centrage horizontal
		wg = (int)(w-2*marge);
		
		// hauteur des graphiques
		hg1 = (int)(0.5*h);
		hg2 = (int)(0.2*h);

		// dessin des cadres des graphiques
		imgGrille = Image.createImage(w, h);
		Graphics g = imgGrille.getGraphics();
		g.setColor(0, 0, 0);
		g.drawRect(marge, marge, (int)wg, hg1);
		g.drawRect(marge, 2*marge + hg1, (int)wg, hg2);

		// écriture des étiquettes
		xv = 2*marge;
		yv = 3*marge + hg1 + hg2;
		int hf = g.getFont().getHeight();
		g.drawString("Cours : ", xv, yv + hf, Graphics.TOP|Graphics.LEFT);
		g.drawString("Volume : ", xv, yv + 2*hf, Graphics.TOP|Graphics.LEFT);
		if(afficheMMA){
			g.drawString("MMA : ", xv, yv + 3*hf, Graphics.TOP|Graphics.LEFT);
		}
	}
  • <<
  •  
  • >>