Comme me l'a montré OsTaLaKaR il y a quelques semaines pour un JTextArea j'ai tenté d'utiliser un JScrollPane comme conteneur sur un JPanel mais malgré mes nombreuses tentatives et recherches je n'ai pas trouvé.

J'ai un dessin très grand qui représente plus de 300 points séparés, et je cherche a placer une barre de défilement.

Je dessine sur un JPanel lui même dans une JFrame, j'ai bien trouver un lien mais il ne me semble pas qu'il y est ma solution et surtout je ne comprend pas tout se qui s'y trouve.
http://www.javalobby.org/java/forums/t21355.html

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
 
 
//
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)
    {
        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);
    } 
}