Bonjour, voila je vous expose un petit problème auquel je suis confronté.

Dans se code je convertie un string en int et je tri par ordre décroissant des valeurs d'une table acces que j'ai récupéré dans une JTable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 //converti les string en int
         for(int i = 1  ; i < table.getColumnCount(); i++)
        {
        String s= (String) table.getValueAt(Incr, i);
        String[] s2 = s.split("%");
        recupVal = Integer.parseInt(s2[0]);
        recupVal*=3.6;
        floatVal[i-1] = recupVal;
        }
 
         // Tri
     int max, j , temp;
     for( int i = table.getColumnCount() -1 ; i > 0 ; i--){
         max = 0;
         for(j = 1 ; j <= i ; j++){
             if(floatVal[j] < floatVal[max])
                 max = j;
         }
         temp = (int) floatVal[max];
         floatVal[max] = floatVal[i];
         floatVal[i] = temp;
     }
Pour l'instant tous fonctionne très bien, ensuite dans se code je créer une graphe en camembert (PieChart).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 // Création des Pie
        for(int i = 1  ; i < table.getColumnCount(); i++)
        {
        g2d.setPaint( Color.tableau_Couleur[i-1]);
        g2d.fillRect(440, dec, 40, 20);
        g2d.setStroke( new BasicStroke( 6.0f ) );
        g2d.fillArc( 90, 80 , 300, 300,90, -(int)  floatVal[i-1]);
        g.setFont(  new Font( "", Font.BOLD + Font.ITALIC, 18 ) );
        g2d.setPaint( Color.black );
        g.drawString(""+ table.getValueAt(Incr, i), 500,decstring);
        g.drawString(": "+ table.getColumnName(i), 550, decstring);
        g2d.setStroke( new BasicStroke( 1.0f ) );
        g.drawArc( 90, 80, 300, 300, 0, 360 );
        dec +=40;
        decstring += 40; 
        }
Je démarre ma boucle for à i=1 car je ne souhaite pas récupéré la 1ière valeur

Voila donc mon soucis se trouve au niveau des couleurs, car vu que je tri les valeurs dans ma fonction de tri les couleur de la légende que je trace via le fillRect() sont fixe par contre pour se qui est des fillArc() vu que le maximum n'est pas tous le temps la même colonne il y a un décalage entre les couleurs de la légende et ceux des Arc.

Ce que je souhaiterai faire ça serai que la couleur sera attacher à la colonne et non aux valeurs .

Voila si vous avez une idée ( je ne demande pas un code) mais juste une piste car la je sèche complètement.

Quelque Screen pour comprendre :



Dans se cas tous va bien, le gris correspond bien a 100%, le jaune a 99% et le noir a 2%



Mais dans se cas rien ne va plus, les couleurs ne correspondent plus.

j'espère avoir été asse clair, et je vous remercie pour vos réponse.

Cordialement,


Ps: Ne me demander pas pourquoi je n'ai pas utilisé JFreeChart c'est mes condition de stage .
Ps2: après une remarque dans le deuxième cas il n'y a pas d’erreur de proportion, c'est juste que tous les Arcs démarre de 0, donc si plusieurs ont le même pourcentage, ils serons superposé.