JScrollBar max=90 + pb verticale
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 ?? :roll:
:bug:
Code:
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. :D