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

avec Java Discussion :

Attributs HTMLDocument via HTMLEditorKit


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Par défaut Attributs HTMLDocument via HTMLEditorKit
    Bonjour,

    J'essaye de faire un petit éditeur de texte HTML, et pour les actions gras, italique, souligner, je voudrais un bouton toggle (JToggleButton).

    Le problème que je rencontre vient du fait qu'il faut pouvoir balader le curseur dans le document et que l'état des boutons (enfoncé ou non) doit se mettre à jour en même temps.

    Par exemple : le curseur est sur une zone en gras. Le bouton gras doit être enfoncé. A l'inverse, quand il sort d'une zone en gras, le bouton doit se relever.

    J'ai donc besoin de connaître l'état du texte HTML à une position donnée du document (gras, italique, souligné). Je n'ai pas trouvé comment faire cela

    Merci de votre aide

    (PS : j'utilise les actions de l'HTMLEditorKit pour faire mes boutons)

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu peux utiliser un CaretListener pour savoir quand le curseur change de position puis la méthode getInputAttributes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Par défaut
    Ok je te remercie.

    J'ai effectivement essayé cette méthode, mais la méthode getInputAttributes() ne me renvoie pas les attributs au niveau du caret mais au niveau de la position précédente du caret. Du coup, ça ne me permet pas de mettre à jour l'état des boutons au bon moment.
    Est-ce que c'est parce que je ne m'en sers pas correctement ?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ca parait étonnant. Tu stockes peut-être les informations, ce qui expliquerait ce décalage ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Par défaut
    A priori, je ne touche pas à la méthode getInputAttributes() ailleurs.
    Pourtant, quand j'essaye de l'appeler dans le CaretUpdate(), il y a bien un décalage entre ce sur quoi pointe le curseur et les valeurs renvoyées par la méthode, et si tu me dis que ce n'est pas normal, alors c'est bien étrange...

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    J'ai une hypothèse : il faut que le mouvement du "caret" soit complètement "consommé" pour que la position du "caret" soit prise en compte entièrement.
    L'editor possède déjà un CaretListener. Si celui que tu as ajouté est appelé en premier, alors l'editor n'a pas encore fait toutes les modifications de propriétés.
    Il faudrait donc.... éplucher la doc
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Par défaut
    J'ai regardé dans les superclasses, et il n'y a à priori pas de CaretListener Dans JTextPane et JEditorPane.
    Mais ton hypothèse comme quoi toutes les mises à jour n'auraient pas été faites au moment où j'appelle mon CaretUpdate a un sens et pourrait bien être la cause du rpbolème.
    Est-ce déjà certain que le getInputAttributes() du JTextPane est sensé récupérer les attributs à la position du caret ?

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par bomehc Voir le message
    J'ai regardé dans les superclasses, et il n'y a à priori pas de CaretListener Dans JTextPane et JEditorPane.
    Mais ton hypothèse comme quoi toutes les mises à jour n'auraient pas été faites au moment où j'appelle mon CaretUpdate a un sens et pourrait bien être la cause du rpbolème.
    Est-ce déjà certain que le getInputAttributes() du JTextPane est sensé récupérer les attributs à la position du caret ?
    Tu peux très facilement tester cette hypothèse : ajoute un JButton sur ton interface pour appeler le getInputAttributes. Puisque c'est en dehors du CaretListener, tu seras fixé
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Par défaut
    Bonne idée en effet.
    Alors j'ai fais le test, et apparement ça ne récupère pas les attributs à la position du caret, mais ceux avec lequel je JTextPane s'apprête à écrire le caractère suivante. En fait, ça récupère les attributs du caractères précédent le caret, et donc avec lequel il va écrire le suivant.
    Le résultat est en tout cas différent de celui du CaretUpdate, donc il doit effecture d'autres opérations par la suite.

    Mais du coup, la méthode ne me permet pas de mettre à jour les boutons dans le . N'y aurait-il pas un moyen de l'appeler après que toutes les opréations de mises à jours d'attributs ont été faites ?

Discussions similaires

  1. Attribut inaccessible via request.getAttribute
    Par Aedan dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 18/01/2013, 19h24
  2. Récupérer un attribut XML via xpath
    Par shaloine dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 28/07/2010, 10h09
  3. [AJAX] Exécuter les attributs class via AJAX
    Par GreatDeveloperOnizuka dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/02/2008, 17h37
  4. Réponses: 4
    Dernier message: 28/03/2007, 22h23
  5. Réponses: 4
    Dernier message: 25/05/2006, 17h36

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