IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[JSlider] controler intervalles de déplacement du curseur ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Par défaut [JSlider] controler intervalles de déplacement du curseur ?
    Bonjour,
    J'ai quelques point que je n'arrive pas a régler avec l'utilisation du JSlider !

    Je cherche premièrement contrôler les intervalles de déplacement du curseur.
    J'ai un slider avec les limites [0 : 100], si je clic sur la droit ou la gauche du curseur, celui ci se deplace de 1 en 1. Idem avec les controles du clavier !
    J'aimerais qu'il se deplace de 5 en 5 par exemple mais rien trouvé dans la javadoc.

    Autre chose, si je crée un slider de limite [0 : 10] par exemple et que je lui donne une taille assez grande (100 ou 200 px), une valeur du slider (5 par exemple) à plusieurs positions visuelles, ce qui n'est pas de tres bon gout, je me sert de slider pour des notations, pas très précis pour l'utilisateur
    Une idée pour ce problème ?
    J'ai essayé de setter la valeur (5 dans l'exemple), mais le curseur de bouge pas et reste a cheval entre 5 et 6.

    Pour finir, un JSlider n'a pas de support de la molette , une piste pour comment le rajouter ?

    Merci
    n!co

  2. #2
    Membre émérite
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Par défaut
    Ca n'inspire personne ?

    Je demande la lune ou vous êtes tous au ski ?

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    alors pour ta première question (la valeur ajoutée ou retirée par clic), ça doit dépendre de l'UI, il me semble. Il faudrait regarder plus en profondeur (EDIT : en effet : méthode BasicSliderUI.scrollByBlock).

    Pour la deuxième question, je crois que : monJSlider.setSnapToTicks(true); suffira.

    Enfin, pour la molette, ça doit aussi dépendre de l'UI, mais tu peux toujours ajouter un MouseWheelListener si l'UI n'en a pas déjà mis.

    Donc tu veux peut-être écrire une SliderUI (qui hérite de BasicSliderUI ou MetalSliderUI).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre émérite
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Par défaut
    1. J'ai redifini BasicSliderUI.scrollByUnit plutot que scrollByBlock. C'est la méthode appellé dans MetalSliderUI et scrollByBlock, je trouve le raisonnement un peu louche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int blockIncrement = (slider.getMaximum() - slider.getMinimum()) / 10;
    if (blockIncrement <= 0 && slider.getMaximum() > slider.getMinimum()) {
            blockIncrement = 1;
    }
    Dans quelle condition blockIncrement n'est pas egale a 1 ?
    Enfin scrollByUnit c'est la meme chose mais blockIncrement est initialisé a 1 des le début point bar !

    Si ca intéresse qqn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public final int CLICK_INCREMENT = 5;
     
    public void scrollByUnit(int direction) {
            synchronized(slider)    {
     
                    int oldValue = slider.getValue();
                    int delta = CLICK_INCREMENT * ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
     
                    slider.setValue(oldValue + delta);  
            }       
    }
    C'est moi qui est rajouté la constante INCREMENT et on peut aussi imaginer passer la valeur dans un put et redéfinir le constructeur de la classe pour initialiser la constante.

    2. Comment j'ai fait pour passer a coté de cette méthode !
    A noté qu'avec cette option, il est indispensable d'avoir la valeur d'increment au clic, supérieur à la valeur du minorTickspacing, sinon les évenement clavier et souris sur la barre ne fonctionnent plus, ce qui est logique !
    Vu que par défaut l'incrémente est a un 1, si on veut un minorTickSpacing à plus de 1, il faut redéfinir obligatoirement scrollByUnit(int

    3. Je cherchais bien plus compliqué, mais c'était tellement simple !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private final int WHEEL_INCREMENT = 10;
     
    private void jSlider1MouseWheelMoved(java.awt.event.MouseWheelEvent evt) {                                         
     
            if( evt.getWheelRotation() > 0 ) {
                    jSlider1.setValue(jSlider1.getValue() + WHEEL_INCREMENT);
            }
            else if(  evt.getWheelRotation() < 0 ) {
                    jSlider1.setValue(jSlider1.getValue() - WHEEL_INCREMENT);
            }
    }
    Merci beaucoup xavlours

    n!co

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Citation Envoyé par n!co
    3. Je cherchais bien plus compliqué, mais c'était tellement simple !!
    En ajouter un, c'est assez simple, mais vérifier qu'il n'y en a pas déjà un fait pour ça et qu'on aurait mal configuré, c'est autre chose ... Puis quand on a la tête dedans, hein.

    Si tu veux respecter la vision de Swing, il faut te servir de l'UI (méthode installListeners) pour ajouter le mouseWheelListener. Après, c'est toi qui choisis.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre émérite
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Par défaut
    Citation Envoyé par xavlours
    Si tu veux respecter la vision de Swing, il faut te servir de l'UI (méthode installListeners) pour ajouter le mouseWheelListener. Après, c'est toi qui choisis.
    Budget Budget !! (mon chef n'a pas la vision swing )
    Pour le moment je vais me contenter de ma première solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacement du curseur du JSlider
    Par Xavi91 dans le forum Général Java
    Réponses: 3
    Dernier message: 24/10/2010, 23h58
  2. Déplacement du curseur
    Par sylvain591 dans le forum Excel
    Réponses: 2
    Dernier message: 22/10/2008, 14h56
  3. Déplacement du curseur au clavier
    Par mout1234 dans le forum Excel
    Réponses: 4
    Dernier message: 12/09/2008, 10h03
  4. [PDO] Déplacement du curseur d'un recordset
    Par dorian53 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/11/2006, 11h52
  5. Réponses: 3
    Dernier message: 19/11/2004, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo