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 :

[JList][Toltip] mauvais index lors du getTooltipText()


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Par défaut [JList][Toltip] mauvais index lors du getTooltipText()
    Bonjour ;

    Je rencontre un problème avec l'utilisation des JList.
    Le texte de mes tooltip étant stocké dans un fichier .txt, j'ai redéfini la methode getTooltipText() de ma classe JList.
    Tout fonctionnait à merveille, jusqu'à ce que je change le Layout Manager en BorderLayout.
    Depuis, lorsque je passe mon curseur au dessus de ma JList sans être sur un objet, il m'affiche le tooltip de la dernière entrée de ma JList.

    Voici le code de la methode gtTooltipText() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String getToolTipText(MouseEvent event) {
            int index = this.locationToIndex(event.getPoint());
            File item = (File) this.getModel().getElementAt(index);
            InputStreamReader isr;
            LineNumberReader lnr;
            String myLine;
            /*ouverture du fichier, 
            /*lecture des lignes, 
            /*le tout dans la variable all*/
            return all;
    }
    Un petit sysout(index) m'a permis de constater que si mon curseur n'est pas au dessus d'un élément de ma JList, il prend par défaut le dernier.

    Mon interface s'organise comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private JPanel mainPanel = new JPanel(new BorderLayout());
    private JPanel pluginPanel = new JPanel(new BorderLayout());
    private JListWithTooltips pluginsView = new JListWithTooltips(montableau);
    pluginPanel.add(pluginsView, BorderLayout.center);
    mainPanel.add(pluginPanel, BorderLayout.east);
    Merci d'avoir lu jusque là

    Une idée ?


    Cordialement ;

    Arpheus

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,



    locationToIndex() retourne la cellule la plus proche...
    Pour obtenir le comportement que tu souhaites tu dois coupler cela avec getCellBounds() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int index = this.locationToIndex(event.getPoint());
    if ( this.getCellBounds(index, index).contains(event.getPoint())) {
    	// On est bien sur une cellule
    } else {
    	// On est sur un espace vide
    }
    a++

    PS : Attention à la lecture de fichier dans l'EDT qui pourrait s'avérer problématique (blocage de l'affichage).
    De même un système de cache pourrait être envisagé pour éviter de relire le fichier à chaque fois...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Par défaut
    Merci, c'est logique en effet.

    Citation Envoyé par adiGuba
    De même un système de cache pourrait être envisagé pour éviter de relire le fichier à chaque fois...
    Je vais y penser, même si les données à lire sont minimes, c'est toujours ça de gagné et ça me fera les pieds

    Bonne continuation

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

Discussions similaires

  1. Récupérer l'index lors d'un clic sur menustrip
    Par GriffinK dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/04/2008, 14h54
  2. [JList] afficher un menu lors d'un drag and drop
    Par skyangel dans le forum Composants
    Réponses: 4
    Dernier message: 12/03/2008, 15h16
  3. Mauvais focus lors du tri d'une colonne sur un datagrid
    Par Scorpi0 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/10/2007, 14h18
  4. [JComboBox] Perte d'index lors du chargement
    Par sozie9372 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 25/08/2006, 09h34
  5. [Tableaux] Réafficher page index lors d'un clic
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2006, 15h35

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