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

Composants Java Discussion :

Evenement "clic sur aucun élément" d'une JList ?


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Points : 19
    Points
    19
    Par défaut Evenement "clic sur aucun élément" d'une JList ?
    Bonjour

    Connaitriez vous un moyen d'annuler la selection d'un élément dans une JList lorsque l'utilisateur clique dans la jList sans cliquer sur un des éléments qui s'y trouvent ?

    Actuellement je fais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    private void listMouseClicked(java.awt.event.MouseEvent evt) {
            int selectedIndex = this.list.locationToIndex(evt.getPoint());
            Rectangle selectedCell = this.list.getCellBounds(selectedIndex, selectedIndex);
     
            if(!selectedCell.contains(evt.getPoint())){
                  list.clearSelection();
            }
    }
    Le problème est qu'avant d'interpreter le clic souris, java semble selectionner l'élément le plus proche du clic (certainement via locationToIndex()) du coup, avant de nettoyer ma selection, java selectionne un élément intermédiaire.

    Je ne sais pas si c'est suffisament clair, donc voici un schéma résumant ma situation

    Voici les différents états de ma jList
    initialement :
    [ element 1 <= initialement sélectionné
    element 2
    element 3
    vide
    vide <= clic effectué
    ...... ]
    intermédiaire (provoqué par la gestion interne des jList par java, je suppose) :
    [ element 1
    element 2
    element 3 <= sélectionné par java (probablement via locationToIndex())
    vide
    vide
    ...... ]
    final (après l'exécution de ma méthode listMouseClicked(java.awt.event.MouseEvent evt))
    [ element 1
    element 2
    element 3 <= perte sélection
    vide
    vide
    ...... ]
    Donc au final j'arrive bien à une liste avec tous les éléments désélectionnés, mais je voudrais supprimer l'état intermédiaire qui semble me sélectionner par défaut l'élément le plus près de mon clic, je voudrais que si je ne clic pas sur un élément de la jList (tout en cliquant dans la jList) aucun autre élément ne soit sélectionné.

    Quelqu'un aurait-il une idée ?
    Merci d'avance !

    Si je n'ai pas été assez clair, dites le moi, j'essayerais d'éclaircir les points d'ombre de mon explication

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par nuts62 Voir le message
    Le problème est qu'avant d'interpreter le clic souris, java semble selectionner l'élément le plus proche du clic (certainement via locationToIndex()) du coup, avant de nettoyer ma selection, java selectionne un élément intermédiaire.
    C'est tout à fait cela ! D'ailleurs c'est indiqué dans la documentation de la méthode locationToIndex().

    Une solution serait de redéfinir cette méthode afin de vérifier l'existence d'une cellule à cet emplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	@Override
    	public int locationToIndex(Point location) {
    		int index = super.locationToIndex(location);
    		if (index>=0) {
    			Rectangle rectangle = getCellBounds(index, index);
    			if (rectangle==null || rectangle.contains(location)==false)
    				index = -1;
    		}
    		return index;
    	}}
    a++

Discussions similaires

  1. Intercepter le clic sur un élément HTML
    Par PP(Team) dans le forum Android
    Réponses: 1
    Dernier message: 17/07/2012, 10h42
  2. Réponses: 8
    Dernier message: 27/12/2010, 22h01
  3. problème avec le clic sur un élément
    Par yvespi dans le forum Powerpoint
    Réponses: 1
    Dernier message: 03/11/2010, 17h12
  4. Réponses: 31
    Dernier message: 12/03/2010, 15h44
  5. Détecter le clic sur un élément en particulier
    Par pasqual dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/11/2009, 15h30

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