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 :

Rendre une JEditorPane "read only"


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Points : 55
    Points
    55
    Par défaut Rendre une JEditorPane "read only"
    Bonjour,

    Je souhaiterais rendre "read only" une JEditorPane que j'utilise (càd curseur absent et impossiblité pour l'utilisateur de rentrer du texte).
    J'ai essayé avec la méthode setEditable(false), mais dans ce cas même la data que j'insère moi dans la JEditorPane n'est pas prise en compte.
    Pour info, j'ai implémenté cette petite méthode dans ma JEditorPane pour insérer du texte (coloré) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void append(Color color, String string) {
          StyleContext styleContext = StyleContext.getDefaultStyleContext();
          AttributeSet attributeSet = styleContext.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, color);
          int length = getDocument().getLength();
     
          setCaretPosition(length);
          setCharacterAttributes(attributeSet, false);
          replaceSelection(string);
        }
    Merci par avance pour vos réponses.

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 571
    Points : 15 538
    Points
    15 538
    Par défaut
    Je sais pas si il y a plus direct mais tu dois pouvoir contourner en faisant :
    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
     
    public void append(Color color, String string) {
          boolean editable = isEditable();
          setEditable(true);
     
          StyleContext styleContext = StyleContext.getDefaultStyleContext();
          AttributeSet attributeSet = styleContext.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, color);
          int length = getDocument().getLength();
     
          setCaretPosition(length);
          setCharacterAttributes(attributeSet, false);
          replaceSelection(string);
     
          setEditable(editable);
     
        }

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Points : 55
    Points
    55
    Par défaut
    Merci Uther.
    En fait ton bout de code n'a pas trop marché, mais ça m'a au moins donné une idée de contournement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public synchronized void append(Color color, String string) {
          setEditable(true);
          StyleContext styleContext = StyleContext.getDefaultStyleContext();
          AttributeSet attributeSet = styleContext.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, color);
          int length = getDocument().getLength();      
          setCaretPosition(length);
          setCharacterAttributes(attributeSet, false);
          replaceSelection(string);
          setEditable(false);
        }
    L'idée c'est de rendre la JEditorPane editable juste au moment ou je veux insérer des trucs, et puis désactiver ça à la fin du traitement.
    Je ne sais pas si le synchronized est obligatoire dans mon cas, mais je le fais pour errradiquer le cas où l'append ne se fasse pas sur le thread du swing et permette ainsi à l'utilisateur d'accéder à la JEditorPane (et ça m'embête d'aller investiguer si l'append se fait sur le EWT ou pas )
    Merci beaucoup en tout cas !!!

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

Discussions similaires

  1. [script.aculo.us] Mettre une page en Read-only
    Par ilalaina dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 14/07/2009, 08h56
  2. Mettre une DataGridViewRow en Read only
    Par Contrec dans le forum C#
    Réponses: 5
    Dernier message: 07/12/2007, 08h31
  3. Faire des modifs sur une sheet excel Read Only via VBA
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 18h02
  4. Rendre ma BD standby disponible en read only?
    Par learn dans le forum Administration
    Réponses: 2
    Dernier message: 30/03/2004, 11h31

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