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 :

JTextPane récupérer le mot cliqué


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Par défaut JTextPane récupérer le mot cliqué
    Bonjour,

    je souhaite faire un truc un peu tordu :

    Un JTextPane contient un texte, avec retours à la ligne possibles.
    Il faudrait que quand on clique sur un mot on sache quel est le mot cliqué...
    Quelqu'un sait-il comment faire cela ?

    (un autre conteneur de texte pourrait aussi convenir, mais je préfèrerais avec le Jtextpane)


    S'il vous plaît
    merci.

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Cela doit être gérable en implémentant HyperlinkListener. Je m'arrête là car jamais utilisé personnellement.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    Bonjour,

    Il doit y avoir moyen en réagissant à l'évènement du click en récupérant le texte du composant (getTetx() ) et en récupérant également la position du curseur (getCaretPosition() ), et en recoupant les deux informations : recherche du caractère blanc à gauche et du caractère blanc à droite de la position du curseur dans le texte. Enfin, un petit substring sur le texte avec ces positions pour avoir le mot.

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    J'y ai pensé mais j'ai un doute sur le getCaretPosition() qui pour moi va renvoyer la position avant le click. Il me semble ( je suis pas sûr ) que l'événement est traité avec de déplacer le curseur.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    En effet, il faudrait savoir dans quel ordre les evenements sont postés par le systême d'évènements de Java.

    A la limite peut-être sur un mouseReleased.
    Ou encore méthode un peu bourrin : sur un CaretEvent qui surviendrait juste après un clique de souris ^^ !

  6. #6
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Ta méthode bourrin ne peut pas marcher, si l'utilsateur appuie sur control-fin ( pour aller à la fin du texte ), l'application considérera cela comme un click sur le dernier mot.

  7. #7
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Par défaut
    2 petites précisions :
    1) l'utilisateur est naïf (il s'agira d'enfants), il ne fera pas des trucs bizarres comme appuyer sur Control Fin ou ce genre de choses
    2) le texte est sur plusieurs lignes, donc je vois difficilement comment savoir à quel mot on se situe.

    merci de votre attention

  8. #8
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    1) le getCaretPosition devrait donc fonctionner ( en espérant que le môme ne touche pas au clavier... )
    2) une regex sur ton textarea le découpera sans soucis en tableau de mots.

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Tu peux ajouter un MouseListener sur ton JTextArea, ensuite dans l'évènement, tu récupères la position cliquée avec ((JTextPane) e.getComponent()).viewToModel(e.getPoint()). A partir de là, c'est assez facile de trouver le premier caractère blanc avant ou après la position.

Discussions similaires

  1. [JTextPane] Extraire un mot
    Par doudine dans le forum Composants
    Réponses: 3
    Dernier message: 21/04/2012, 23h11
  2. Récupérer un lien "cliqué"
    Par Luffy Duck dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2006, 17h33
  3. Comment récupérer un mot de passe ?¿
    Par artotal dans le forum Administration
    Réponses: 10
    Dernier message: 01/12/2005, 23h15
  4. Réponses: 1
    Dernier message: 19/09/2005, 14h56
  5. [JTextPane] Récupérer l'index
    Par doudine dans le forum Composants
    Réponses: 3
    Dernier message: 09/08/2004, 12h44

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