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

 Java Discussion :

Listener sur JScrollPane


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 469
    Par défaut Listener sur JScrollPane
    Bonjour,
    Je dispose d'une grande image dans un JPanel lui même inclus dans un JScrollPane. Jusque là rien de particulier, quand j'agis sur les ascenseurs à droite ou en bas tout se passe bien. A certains endroits de mon image je rajoute des ronds blancs à l'aide d'un clic sur l'image. Bien entendu quand j'utilise les ascenseurs, les ronds disparaissent. Je voudrais qu'ils continuent d'apparaître sans les ajouter à l'image elle-même : il s'agit de dessiner dessus. Pour le moment je stocke les coordonnées image des points que je rajoute et je les redessine quand j'ai déplacé les curseurs. Ce que je voudrais c'est pouvoir déterminer à quel moment les curseurs ont bougé pour automatiser le dessin des points qui sont dans la liste.
    Comment faire ?

    C'est peut-être tout bête mais je ne vois pas comment faire.

    Question subsidiaire : où trouver des infos sur ChangeListener (à part la javadoc bien sûr) ? Je n'ai pas trouvé grand chose d'intéressant avec "ChangeListener java" sous Google.

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    Si tu fais implements Scrollable sur ton panel tu devrais avoir une méthode ScrollablePicture,(tu vas rajouter des options à ton JScrollpane), ensuite tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ScrollablePicture {
    setAutoscrolls(true); 
    addMouseMotionListener(this); 
    }
    et dans ton mouse tu devrais maintenant detecter quand l'utilisateur scroll ton image.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 469
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonjour,

    Si tu fais implements Scrollable sur ton panel tu devrais avoir une méthode ScrollablePicture,(tu vas rajouter des options à ton JScrollpane), ensuite tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ScrollablePicture {
    setAutoscrolls(true); 
    addMouseMotionListener(this); 
    }
    et dans ton mouse tu devrais maintenant detecter quand l'utilisateur scroll ton image.
    Merci, je vais tester cela bientôt.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 469
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonjour,

    Si tu fais implements Scrollable sur ton panel tu devrais avoir une méthode ScrollablePicture,(tu vas rajouter des options à ton JScrollpane), ensuite tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ScrollablePicture {
    setAutoscrolls(true); 
    addMouseMotionListener(this); 
    }
    et dans ton mouse tu devrais maintenant detecter quand l'utilisateur scroll ton image.
    Bon j'ai testé. Tout d'abord je me suis trompé, mon image est dans un composant carte qui dérive d'un JLabel. Cependant j'ai testé aussi bien avec un JPanel qu'avec un JLabel, l'implémentation de Scrollable ne fait pas apparaître la méthode ScrollablePicture. J'ai fait bouger les scrollbars en bas et à droite et les seules méthodes appelées sont :
    getScrollableTracksViewportHeight()
    getScrollableTracksViewportWidth()

    J'ai donc rajouté les dessins des ronds dans ces méthodes, mais ça ne marche toujours pas car je pense qu'après ces appels de méthode il y a un appel au repaint du composant.
    Une idée ?

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 469
    Par défaut Listener et JScrollPane
    Je suis toujours sur mon problème de Listener sur un JScrollPane, la solution qui m'a été proposé ne semble pas marché (ou je ne l'ai pas compris).
    Donc il s'agit pour moi de récupérer les actions sur le JScrollPane pour être informé que l'utilisateur a scrollé. Cependant je ne veux bien sûr pas perdre l'action naturelle du scroll (déplacement horizontal ou vertical) je veux simplement rajouter une action.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //dans un JPanel
    JScrollPane jspt1 = new JScrollPane(new JLabel(image));
    setLayout(new BorderLayout());
    add(jspt1, BorderLayout.CENTER);

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Par défaut
    Tu peux peut-être utiliser les méthodes :
    - getHorizontalScrollBar()
    - getVerticalScrollBar()

  7. #7
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Avec la remonter de ce post je viens de me rendre compte qu'après t'avoir proposé une méthode je ne t'ai pas répondu, j'en suis vraiment désolé :s. Si elle ne fonctionne pas, avec l'idée de Yann_69 il me semble qu'il est possible d'utiliser un listener qui pourrait t'interesser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Le ScrollPane.getVerticalScrollBar().addAdjustmentListener())
    //ou
    Le ScrollPane.getHorizontalScrollBar().addAdjustmentListener())
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 469
    Par défaut
    Citation Envoyé par Yann_69 Voir le message
    Tu peux peut-être utiliser les méthodes :
    - getHorizontalScrollBar()
    - getVerticalScrollBar()
    Merci. J'étais passé à autre chose en attendant une solution. J'en ai trouvé une en attendant en redessinant explicitement l'image via un bouton mais ce n'est pas tout à fait ce que je souhaitais au départ.

    Je vais creuser ta solution.

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

Discussions similaires

  1. Listener sur JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 05/02/2009, 16h27
  2. Language]Listener sur booléen
    Par harris_macken dans le forum Langage
    Réponses: 9
    Dernier message: 12/06/2005, 00h25
  3. [LISTENER] sur l'insertion de cd
    Par divxdede dans le forum Multimédia
    Réponses: 2
    Dernier message: 03/07/2004, 11h28
  4. [JSlider] listener sur Jslider
    Par Garion dans le forum Composants
    Réponses: 4
    Dernier message: 31/05/2004, 13h33
  5. Listener sur un JPanel
    Par ptitelfe dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/03/2004, 13h14

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