Je n'arrive pas a faire déffiler mon image avec le JScrollPane.

La barre de déffilement apparait bien mais l'image est couper a la distance du JScrollPane, bien que le JPanel soit bien plus grand.

Voici mon code, les données viennent d'un vecteur
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
 
 
//
int_taille = ((sto_donnee.capacity()-1)*10)+20;  // nombre de données * taille entre les donnés plus 20
JCanvas jpa_dessin = new JCanvas(sto_donnee,int_taille);
JScrollPane jsp_dessin = new JScrollPane(jpa_dessin);
jsp_dessin.setBounds(51,10,400,300);
jsp_dessin.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
 
//
//
this.add(jsp_dessin);
//
//
jsp_dessin.setEnabled(rootPaneCheckingEnabled);
jsp_dessin.setVisible(rootPaneCheckingEnabled);
 
 
************************************
package mi_1;
import javax.swing.*;
import java.awt.*;
 
public class JCanvas extends JPanel
{
    Stocage sto_mi;
    int int_longueur;
    public JCanvas()
    {
        super();
    }
 
    public JCanvas(Stocage sto_chiffres, int int_lg)
    {
        super();
        sto_mi = sto_chiffres;
        int_longueur = int_lg;
    }
 
 
    public void paint( Graphics g)
    {
        c_eut c_e;
        int int_distance , int_e1 , int_e2;
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, int_longueur, 280);
        g.setColor(Color.BLACK);
 
        for ( int i =20;i<=180;i=i+20)
        {
            g.drawLine(0, i, int_longueur, i);
        }
 
        for (int i=0 ; i <= sto_mi.capacity()-1; i++)
        {
            c_e = (c_eut)sto_mi.elementAt(i);
            int_distance = (10 + (i*5));
            int_e1 = (c_e.et1 * 20 ) -15;
            int_e2 = (c_e.et2 * 20 ) -15;
            g.setColor(Color.blue);
            g.fillOval(int_distance, int_e1, 5, 30);
            g.setColor(Color.GREEN);
            g.fillOval(int_distance, int_e2, 5, 30);
        }
        g.setColor(Color.GREEN);
    } 
}