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

