Ajouter un commentaire

sofuzion
Question d'une débutante en java ^^

Bonjour tout le monde, je suis en train d'apprendre le java à la fac ..
J'ai fait une applet avec 10 traits de tailles aléatoires, et ensuite une fonction de trie. Je dois trier suivant la taille du trait générer (la fonction trie fonctionne correctement!) par contre, quand je réactualise l'applet (avec repaint()) je n'arrive pas à réafficher les traits dans l'ordre croissant de leur taille.

J'ai donc deux classes : une trait(pour dessiner un trait) et une Rect (pour l'applet et le reste)

Quelqu'un serait il me dire où pourrait se trouver mon erreur?

Merci d'avance.


import java.awt.Color;
import java.awt.Graphics;

public class Trait 
{
	public int x, y;		//x et y coordonnées du trait
	public int taille;		//taille du trait

	public Trait(int x,int y,int dim)		//constructeur
	{	
		this.x = x;							//permet d'initialiser les coordonnées x et y
		this.y = y;						
		taille = dim;						//initialise la taille
	}
	
	public void dessiner (Graphics g)
	{
		g.setColor(Color.blue);				//trait de couleur bleu
		g.drawLine(x,y,x+taille,y);			//dessiner un trait de coordonnées x et y de départ
											// et (x+taille) et y d'arrivées
	}
}



import java.applet.*;
import java.awt.*;

public class Rect extends Applet implements Runnable
{
	
	private Thread t;						//création d'un thread t
	private Trait tab[];					//création d'un tableau tab de type Traie
	
	public Rect()							//constructeur
	{	
		int taille;				
		tab = new Trait[10] ;				//initialisation du tableau tab de Traie de taille 10
		t = new Thread(this);
		int y=10;				
		for(int i=0;i<10;i++)							//on génére 10 traits 
		{	
			taille = (int) (Math.random() * 400 +1);	//pour la taille aléatoire d'un traie
			y = y + 5;	
			tab[i]= new Trait(20,y,taille);	
		}
		t.start();
		
	}
	
	public void paint (Graphics g)
	{	
		setSize(500, 200);												//taille de l'applet
		g.drawRect(10,10,getSize().width - 20 ,getSize().height - 20);	//pour dessiner un rectangle
		
		for(int i=0;i<10;i++)							//pour les 10 traits du tableau tab
				{
				 tab[i].dessiner(g);					//on dessine un trait 
				 System.out.println(tab[i].taille);		//affichage triselection
				}
		
	}
	

	public void triselection()						//tri
	{
		int i,j,m;
		
		for(i=0;i<(tab.length-1);i++)
		{
			m = i;
			for(j=i+1;j<tab.length;j++)
				if(tab[j].taille < tab[m].taille)
					m = j;
			if (m != i)
				{ Trait c = tab[i];
				  tab[i] = tab[m];
			      tab[m] = c;
				}
			
		}
	}
	

	
	public void run()
	{	
		triselection();					//lance le tri sélection
		repaint();						//permet de réactualiser l'applet
	}
}

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
     J  V     V  PPPP   L     EEEE 
J V V P P L E
J V V PPPP L EEE
J J V V P L E
JJJ V P LLLL EEEE