Bonjour,
Je souhaite afficher les données d'une matrice dans une fenêtre, ce serait des rectangles dont le modèle est dans une classe Display que voici :

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
23
24
25
26
27
28
29
30
 
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.lang.*;
 
public class Display extends JPanel {
  public int la=0;
  public int lo=0;
 
 
  public void paintComponent(Graphics g){
    g.setColor(Color.black);
    g.drawRect(0,0,this.getWidth(), 3*this.getHeight()/4);
 
    g.setColor(Color.blue);
    int height = (this.getHeight()-this.getHeight()/4)/2;
    g.drawRect(la, height, (int)Math.sqrt((lo-la)*(lo-la)), 10);
 
  }
 
  public void getla(int la){
    this.la=la;
  }
 
  public void getlo(int lo){
    this.lo=lo;
  }
 
}
En gros la et lo sont les paramètres dont va dépendre l'affichage des rectangles. J'ai donc une classe test qui est censée me permettre d'afficher plusieurs fois le contenu de la classe display :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
import java.awt.*;      
import java.lang.*;
import java.awt.event.*;  
import javax.swing.*;
 
 
public class testprojet extends JFrame implements ActionListener {
   private Label largeur;     
   private TextField txtla;
   private Label longueur;     
   private TextField txtlo;
 
   private Display pan = new Display();
   private JPanel container = new JPanel();
   public JButton bouton = new JButton("Entrer");
 
   int coo[][] = { 
    {0,50},{52,60},{65,100},{102,155},{160,200}, {202,250}
    };
   int i;
 
   public testprojet() {
      this.setTitle("Animation");
      this.setSize(500, 500);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setLocationRelativeTo(null);
 
      container.setBackground(Color.white);
      container.setLayout(new BorderLayout());
      container.add(pan, BorderLayout.CENTER);
 
      JPanel north = new JPanel();
 
      largeur = new Label("Start : "); 
      north.add(largeur);               
 
      txtla = new TextField(10); 
      north.add(txtla);                
 
      longueur = new Label("Stop : "); 
      north.add(longueur);               
 
      txtlo = new TextField(10); 
      north.add(txtlo);                
 
      north.add(bouton);
 
      container.add(north, BorderLayout.NORTH);
 
      bouton.addActionListener(this);
 
      this.setContentPane(container);
      this.setVisible(true);
   }
 
   public static void main(String[] args) {
      new testprojet();
   }
 
   public void go(){
       for(i=0; i<coo.length; i++) {
	      pan.getla(coo[i][0]);
          pan.getlo(coo[i][1]);
          pan.repaint();
          try {
            Thread.sleep(10);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
      }
  }
 
 
   @Override
   public void actionPerformed(ActionEvent evt) {
      int numberla = Integer.parseInt(txtla.getText());
      txtla.setText("");
      int numberlo=Integer.parseInt(txtlo.getText());
      txtlo.setText("");
 
 
      go();
 
   }
}
L'affichage est censé dépendre de ce que l'on entre dans les TextField mais la ce n'est pas important. La matrice coo contient des coordonnées dont va dépendre l'emplacement et la taille du rectangle. Go() dans le actionPerformed est la boucle qui me permet d'afficher ces rectangles, mais cela ne m'affiche que le dernier rectangle de la matrice, les autres semblent être effacés.. quelqu'un a une idée de pourquoi ?
Merci d'avance