Bonjour à tous...

Alors je crois que c'est le moment de présenter mon problème.
J'ai synchroniser un spinner avec un scrollpane (le spinner déplace la barre de défilement lorsque je clic dessus et vice-versa)
Jusqu'à là pas de pb!
Le truc c'est que mon spinner (ou le scrollpane) ne déplace rien

Donc pour éviter de balancer tout mon code, j'ai isolé mon problème.
Bon j'ai tout mis dans le constructeur de la fenêtre avec un Layout tout pourri (mais ça on s'en fout ).
Ce que je voudrais c'est que le panneau2 se déplace puisque j'ai fait exprès de le faire plus grand que le panneau1

Je remercie par avance ce qui se pencherons sur mon problème

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.awt.Color;
import javax.swing.BoundedRangeModel;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.DefaultFormatter;
import javax.swing.text.DefaultFormatterFactory;
 
 
 
class Fenetre extends JFrame 
{
	/**
         * 
         */
	private static final long serialVersionUID = 1L;
 
	public Fenetre()
	{
	setTitle("Spinner");
	setSize(700, 500);
	getContentPane().setLayout(null);
 
	panneau = new JPanel();
	panneau2 = new JPanel();
 
	panneau.setLayout(null);
	panneau2.setLayout(null);
 
	panneau.setSize(600,400);
	panneau2.setBounds(50,10,540,700);
 
	getContentPane().add(panneau);
	panneau.add(panneau2);
 
	panneau.setBackground (Color.BLACK);
	panneau2.setBackground (Color.DARK_GRAY);
 
 
	int step   = 2;
	int extent = 5;
	int min    = 0;
	int max    = extent*2;
	int value  = 0;
 
	scrollbar = new JScrollBar(JScrollBar.VERTICAL, value, extent, min, max+extent);	
	scrollbar.setUnitIncrement(2);
	scrollbar.setBlockIncrement(1);
 
 
	spinner = new JSpinner(new SpinnerNumberModel(value, min, max, step));
    tf = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();
    ((DefaultFormatter) tf.getFormatter ()).setAllowsInvalid (false);
    factory = (DefaultFormatterFactory)tf.getFormatterFactory();
 
	panneau.add(spinner);
	tf.setBackground(Color.black);
	tf.setForeground(Color.green);
	spinner.setBounds(10, 10, 35, 30);
 
	panneau.add(scrollbar);
	scrollbar.setBounds(10, 50, 20, 300);
	scrollbar.setVisible(true);
 
 
//	La scrollbar fait défiler le spinner
	scrollbar.setUnitIncrement(step);
	scrollbar.getModel().addChangeListener(new ChangeListener() {
	    public void stateChanged(ChangeEvent e) {
	        BoundedRangeModel m = (BoundedRangeModel)e.getSource();
	        spinner.setValue(new Integer(m.getValue()));
	    }
		   });
 
 
 
    //Le spinner fait défiler la barre de défillement
    spinner.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
          scrollbar.setValue(((Integer)spinner.getValue()).intValue());
        }
   });
 
 	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}	
	JScrollBar scrollbar;
	JSpinner spinner;
	JPanel panneau, panneau2;
	JFormattedTextField tf;
	DefaultFormatterFactory factory;
}
 
public class Spin {
 
	/**
         * @param args
         */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Fenetre fen = new Fenetre();
		fen.setVisible(true);
	}
 
}