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 } }