Traitement séquentiel algorithme (avec pas en ms)
Bonjour,
J'ai un petit souci :
J'ai besoin, pour les besoins de mon programme, de faire dérouler un algorithme pas à pas et d'en afficher chacune des étapes à l'écran (coloration de ronds ou de traits)
J'ai tout d'abord essayé avec un :
Code:
1 2 3 4 5 6 7
| public void Algo(){
for( condition ){
//instructions_algorithme
composantGraphique.repaint();
thread.sleep(pas);
}
} |
Or cela bloque completement l'affichage jusqu'à la fin de l'algo puis affiche tout d'un coup.
J'ai ensuite essayé avec un SwingWorker mais sans grand succès , peut être que je ne sait pas l'utiliser correctement mais j'ai ensuite lu que les swingworker étaient utiles seulement pour le traitement parrallèle et non pour le traitement séquentiel.
Quelques uns d'entre vous auraient-t-ils des idées pour réaliser ce type de traitement ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public void AlgoGloutonEdges(long pas,Dessin cadre) throws InterruptedException {
for (Edge e : listEdges) {
ArrayList<Integer> usedColors = new ArrayList<Integer>();
for (Edge succ : e.getRelations()) {
System.out.println(succ.getA().getName() + ":"
+ succ.getB().getName());
if (succ.isColored()) {
usedColors.add(succ.getColor());
}
}
int color = 0;
while (!(e.isColored() && color < colorList.length)) {
if (!(usedColors.contains(color))) {
e.setColor(color);
e.changeIsColoredOn();
cadre.repaint();
Thread.sleep(pas);
}
color++;
}
}
} |
à noter que mon "Dessin cadre" est une classe qui extends JPanel et implements MouseListener et MouseMotionListener et qui gère l'affiche du graphe en fonction du model.