Voilà, j'ai réalisé une fonction qui dessine des trajectoires sur un JLayeredPane (en fait j'ai essayé aussi de dessiner directement sur un JLabel, c'est pareil).
La fonction de dessin :
Code :
- /**Affiche dans le calque, les trajectoires des copépodes pour les images 0 à rang
- * @param rang - la limite à utiliser pour les trajectoires
- */
- private void showTrajectoire(int rang){
- DebugGraphics g = new DebugGraphics(layer.getGraphics());
- int couleur[]= copepodtracker.kernel.ListeCouleur.couleur;
- int c=0;
-
- for(Trajectoire trajectoire : listeTrajectoire){
- if(rang>= trajectoire.getFrame()){
- ArrayList<Coordonnee> traj = trajectoire.getTrajectoire();
- int id = trajectoire.getId();
- g.setColor(new Color(couleur[id % couleur.length]));
- for(Coordonnee coord : traj){
- int cx = (int)coord.getX();
- int cy = (int)coord.getY();
- g.drawLine(cx, cy, cx, cy);
- c++;
- if(c>rang){
- c=0;
- break;
- }
- }
- }
- }
- }
|
Là ou elle est appelée :
Code :
- private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {
- //selectionner la frame par le slider
- i=jSlider1.getValue();
- jLabel1.setText("Frame : "+i);
- try{
- jLabel2.setIcon(new javax.swing.ImageIcon(listeImageFile.get(i)));
- showTrajectoire(i);
- }catch(Exception e){
- }
- }
|
Ca fonctionne, mes trajectoires s'affichent .. pendant le changement d'était de mon slider. Mais après, ça disparait :-/
Qu'est ce que je peux faire pour que ça reste apparant ?
Pour contourner le problème, j'ai fait un bouton qui permet de réafficher les trajectoires, mais c'est pas pratique.
Message édité par c0wb0y le 16-06-2005 à 14:30:16