Bonjour à tous,

J'ai 2 petits problèmes à vous soumettre.

1.

J'ai créé 2 JScrollBar. L'une verticale, l'autre horizontale.
J'ai également 2 JTextField qui me permettent d'afficher la valeur de la scrollbar, à chaque clic que celle-ci. (Je clique sur la scrollbar horizontale et le textfield correspondant change de valeur en conséquence).

Tout ceci marche très bien, mis à part que lorsque je mets le curseur au maximum de la scrollbar, la valeur affichée est 90 !!
Or, quand je fais getMaximum(), j'obtiens bien 100 (valeur par défaut que je n'ai pas modifiée).

Et je précise que cela le fait sur les 2 scrollbars.
Je ne vois pas d'où peut venir ce problème !!??!!


2.

Mon 2e petit problème concerne ma scrollbar verticale.
Comme vous le savez, par défaut, lorsque le curseur est en haut, c'est le minimum, et le curseur en bas, c'est le maximum. La flèche du haut, fait monter le curseur, la flèche du bas le fait descendre.

Dans certaines documentations, il était noté que pour changer le sens, il fallait changer setUnitIncrement() en mettant l'incrément en négatif.
En faisant cela, cela change le sens des flèches (on clique en bas pour faire monter le curseur, et on clique en haut pour faire descendre le curseur).
Moi ce que je veux, c'est que le curseur parte d'en bas, à la valeur 0.

Quelqu'un aurait un petit exemple à me donner pour que j'inverse ma scrollbar ??




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
/*
 * Created on 6 nov. 2007
 */
package tests_IG;
 
import java.awt.AWTEvent;
import java.awt.Dimension;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JTextField;
 
 
public class ScrollBarres extends JFrame{
  JPanel conteneur;
  JTextField txtf_h=new JTextField();
  JTextField txtf_v=new JTextField();
  JScrollBar scroll_h=new JScrollBar(0); // 1/vide = vertical, 0 = horizontal
  JScrollBar scroll_v=new JScrollBar();
 
 
  // constructeur
  public ScrollBarres(){
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }   
  } 
 
 
  private void jbInit() throws Exception{
    // dimensions (largeur, hauteur) et titre de la fenêtre
    this.setSize(new Dimension(360, 250));
    this.setTitle("Test : Scrollbars horizontale et verticale");    
 
    // la classe WindowAdapter implémente l'interface WindowListener, on peut donc l'utiliser sans redéfinir toutes les méthodes
    WindowAdapter win=new WindowAdapter(){
      	public void windowClosing(WindowEvent arg0) { //ferme la fenêtre
      	  System.exit(0); 
      	}
    };
    // association du gestionnaire d'événements à la fenêtre
    this.addWindowListener(win);  
 
    // construction du conteneur (sans gestionnaire de mise en forme)
    conteneur=(JPanel) this.getContentPane();
    conteneur.setLayout(null);
 
    // textfields
    txtf_h.setBounds(220,25,40,20);
    txtf_h.setBackground(null); // en mettant à null, il prend la couleur de la JFrame
    txtf_h.setFocusable(false);
    txtf_v.setBounds(60,75,40,20);
    txtf_v.setBackground(null); 
    txtf_v.setFocusable(false);
 
    // scrollbar
    scroll_h.setBounds(25,25,180,20);
    scroll_h.addAdjustmentListener(new AdjustmentListener()
        {
      		public void adjustmentValueChanged(AdjustmentEvent arg0) {
      		  scroll_valeur_h(arg0);
      		}
        }
    );
    scroll_v.setBounds(25,75,20,100);   
    scroll_v.setAutoscrolls(true);
    scroll_v.setUnitIncrement(-5);
    scroll_v.addAdjustmentListener(new AdjustmentListener()
        {
      		public void adjustmentValueChanged(AdjustmentEvent arg0) {
      		  scroll_valeur_v(arg0);
      		}
        }
    );
 
    // ajout des composants au conteneur
    conteneur.add(txtf_h);
    conteneur.add(txtf_v);
    conteneur.add(scroll_h);
    conteneur.add(scroll_v);
 
  }
 
 
  protected void scroll_valeur_h(AdjustmentEvent arg0) {
    txtf_h.setText(""+scroll_h.getValue()); // on doit mettre "" car setText requiert un String, et non un int
    System.out.println("max h : "+scroll_h.getMaximum()); 
  }
 
  protected void scroll_valeur_v(AdjustmentEvent arg0) {
    txtf_v.setText(""+scroll_v.getValue()); 
  }
 
 
  public static void main(String[] args) {
    // affichage du formulaire
    new ScrollBarres().setVisible(true);
  }
}
Merci d'avance à quiconque aurait une aide à m'apporter.