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 :

Remettre le style par défaut dans un JTextPane / Performances


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Points : 118
    Points
    118
    Par défaut Remettre le style par défaut dans un JTextPane / Performances
    Bonjour,

    J'utilise un JTextPane dans lequel j'ai défini un style particulier pour appliquer sur les mots sélectionnés par l'utilisateur dans une liste. Quand l'utilisateur change la sélection, je remets le style par défaut de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        selectAll();
        setCharacterAttributes(getStyle(StyleContext.DEFAULT_STYLE), true);
    Ca marche, mais dès que le document est gros (plusieurs 10k), les performances sont horribles, car DefaultStyledDocument est assez bourrin et considère que tout le document est modifié et lance un thread qui prend énormément de temps. Comment est-ce que je peux faire pour améliorer ces performances ?

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Points : 118
    Points
    118
    Par défaut
    J'ai fini par trouver comment faire beaucoup plus efficace:
    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
        StyledDocument doc = getStyledDocument();
        int length = doc.getLength();
        int lastEnd = Integer.MAX_VALUE;
        for (int pos = 0; pos < length; pos = lastEnd) {
          Element run = doc.getCharacterElement(pos);
          lastEnd = run.getEndOffset();
          if (pos == lastEnd) {
            // offset + length beyond length of document, bail.
            break;
          }
          MutableAttributeSet attr = (MutableAttributeSet) run.getAttributes();
          if ((attr != null) && (attr.getAttribute(MediaWikiConstants.ATTRIBUTE_TYPE) != null)) { // un attribut ajouté sur mes styles
            doc.setCharacterAttributes(
                run.getStartOffset(),
                run.getEndOffset() - run.getStartOffset(),
                getStyle(StyleContext.DEFAULT_STYLE),
                true);
          }
        }
    Au niveau performance, c'est le jour et la nuit, je suis passé d'une dizaine de secondes à probablement 1/10 de seconde.

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

Discussions similaires

  1. [D7]Remettre valeur par défaut dans un TEdit
    Par LaQude dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2013, 11h58
  2. [C#] Paramètre par défaut dans une fonction
    Par RobinJulie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/01/2012, 14h07
  3. Remettre la couleur par défaut dans un JTextPane
    Par Daertyr dans le forum Composants
    Réponses: 3
    Dernier message: 29/06/2010, 00h19
  4. Définir le style par défaut d'un JTextPane
    Par Silverstone dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/06/2007, 20h48
  5. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 11h52

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