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 :

HTMLDocument mange les espaces


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut HTMLDocument mange les espaces
    Bonjour,

    J'ai un JTextPane qui accueille un HTMLDocuement et je suis confronté à un problème avec les espaces :

    Lorsque j'écris le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    editorKit.read(new StringReader("<html><head></head><body>   test   test    plein d'espaces         hi hi     </body></html>"), htmlDoc, 0);
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    editorKit.write(s, sdoc, 0, sdoc.getLength())
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html><head></head><body>test test plein d'espaces hi hi </body></html>
    Alors, au nom de quoi est-ce que ce %$# de HTMLDocument me mange tous mes espaces ?!

    bref, est-ce que vous savez s'il y a un moyen, ou un paramètre à modifier pour éviter le phénomène ?

    Merci pour votre temps et votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    Bon, en fait, il semble que je doive remplacer les espaces par &nbsp;

    Comment je peux faire pour que tout espace qui entre dans mon HTMLDocument soit automatiquement transformé en &nbsp; ?

    Attention, il faut que ça marche pour la saisie directe, mais aussi pour les copier/coller...

    Merci pour votre aide

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    Alors,

    J'ai fait un filtre qui étend DocumentFilter. Jusque là, pas de problème, sauf que j'arrive pas à lui faire interpréter &nbsp; comme du HTLM correctement.

    J'ai tenté d'insérer les &nbsp; avec HTMLEditorKit.insertHTML() mais il me met le bazar et finit généralment par me mettre des retour à la ligne partout.

    Voici mon Document Filter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
        protected class Filtre extends DocumentFilter implements Serializable {
     
            public Filtre() {
            }
     
            @Override
            public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr) throws BadLocationException {
                replace(fb, offset, 0, str, attr);
            }
     
            @Override
            public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str, AttributeSet attrs) throws BadLocationException {
     
                fb.remove(offset, length);
                int offsetMemory = offset;
                String[] T = s.split(" ",-1);
                fb.insertString(offset, T[0], attrs);
                for(int i=1; i<T.length; i++) {
                    offsetMemory += T[i - 1].length();
                    try {
                        editorKit.insertHTML(sdoc, offsetMemory, "&nbsp;", 0, 0, null);
                    } catch (IOException ex) {
                        Logger.getLogger(JMathTextPane.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    fb.insertString(offsetMemory, T[i], attrs);
                }
            }
        }

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    En fait, rien d'aussi compliqué : il suffisait d'utiliser l'unicode pour " " :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    protected class Filtre extends DocumentFilter implements Serializable {
     
        public Filtre() {
        }
     
        @Override
        public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr) throws BadLocationException {
            replace(fb, offset, 0, str, attr);
        }
     
        @Override
        public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str, AttributeSet attrs) throws BadLocationException {
            String result = str.replaceAll(" ", "\u00A0");
            fb.replace(offset, length, result, attrs);
        }
    En espérant que ça puisse servir à d'autres

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Le '%' en SQL ne remplace pas les espaces...
    Par njac dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/09/2004, 17h10
  3. [String] comment virer tous les espaces vides ?
    Par Alec6 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2004, 14h27
  4. Enlever les espaces
    Par Claythest dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2003, 14h43
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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