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

Interfaces Graphiques en Java Discussion :

Comment changer la couleur de fond d'un JTextPane ?


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut Comment changer la couleur de fond d'un JTextPane ?
    Bonjour,

    Je ne pense pas être tombé de la dernière pluie en Java, mais là j'avoue que je bloque sur une question qui peut sembler banale au départ, mais qui ne l'est pas du tout.

    En effet, Je suis en train de travailler sur un composant dont le but est d'émuler un terminal compatible ANSI.

    Je voudrai obtenir quelque chose qui ressemble fort à une bonne vieille fenêtre de terminal caractères écrit en vert sur un fond noir.

    En fait, il faudrait pouvoir même changer la couleur de fond du terminal par caractères comme dans son ensemble (le fond d'écran).

    J'ai utilisé JTextArea jusqu'à présent, mais on reste dans le monochrome. maintenant je souhaiterai ajouter les couleurs (façon ANSI).

    J'ai donc adapté mon composant en surchargeant un JTextPane. J'ai tout ce qu'il faut pour changer la couleur des caractères en sortie.

    Mais, voilà, pas moyen de changer la couleur de fond du jTextPane dans son ensemble, il reste désespérément blanc.

    J'ai tout essayé du setBackground(Color.white) au setOpaque(false) et en surchargeant paintComponent(Graphics g) pour dessiner un rectangle noir avant d'appeler super...

    J'ai essayé de modifier les styles du StyledDocument (vu le type de sortie brut, je ne peut pas utiliser le HTML), mais on dirait qu'il impose systématiquement un fond opaque blanc.

    Si vous avez déjà rencontré ce problème et que vous savez comment procéder, pourriez-vous m'aider svp ?

    Je ne demande pas qu'on me donne le code tout fait, mais je cherche à savoir vers quoi m'orienter. J'ai examiné le source d'un StyledDocument, je n'ai pas vu où on peut forcer la couleur de fond pour l'ensemble du composant. Si vous savez comment procéder, pouvez-vous me l'indiquer svp ?

    D'avance, je vous remercie.

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Citation Envoyé par l.bruninx Voir le message
    J'ai tout essayé du setBackground(Color.white) au setOpaque(false) et en surchargeant paintComponent(Graphics g) pour dessiner un rectangle noir avant d'appeler super...
    Ça ne serait pas plutôt setOpaque(true) ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Par défaut le composant jTextPane est déjà opaque (donc équivalent de setOpaque(true))...

    Mais, contrairement à JEditorPane, par exemple, le fait de faire jTextPane.setOpaque(false) ne rend pas un objet JTextPane transparent (enfin, la couleur de fond transparente). Le contenu du jTextPane reste opaque et c'est justement ce qu'il faut arriver à changer. Comment peut-on rendre la couleur de fond d'un jTextPane transparente... Pour obtenir le même effet par exemple qu'un jTextArea.setOpaque(false);... jTextPane.setOpaque(false) n'a pas d'effet avec un StyledDocument.

    Comment faire en sorte que l'on puisse changer complètement la couleur de fond d'un StyledDocument, ou de la rendre transparente pour colorer un JPane ou un JScrollPane derrière (autre possibilité). Mais comme le contenu du JTextPane reste opaque, on ne sait pas faire cela non plus.

    Comprenez-vous la nuance de ce que je cherche à faire ?...

    Je ne cherche pas à changer la couleur de quelques caractères, ni d'un paragraphe... Cela, je sait le faire. Mais comment changer la couleur de fond (complète) d'un JTextPane.

    Pouvez-vous m'aider, svp ?

  4. #4
    Membre émérite

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Par défaut
    Bonjour,

    Je viens de faire un test rapide avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            JTextPane code = new JTextPane();
            code.setBackground(Color.blue);
    et la couleur de fond du JTextPane apparait bien en bleu.
    Du coup je ne comprends pas pourquoi ça reste blanc quand tu le testes chez toi ? Est-ce qu'il n'y aurait pas un problème dans la manière dont tu as surchargé les éléments ? (Ou est-ce qu'il y a quelque chose qui m'a échappé ?)

    Benoit

  5. #5
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Nous utilisons le L&F Nimbus...

    Je viens de désactiver ce L&F et le fond de mon JTextPane est bien devenu noir...

    Si j'utilise à nouveau Nimbus, il redevient obstinément blanc...

    Y a t-il une solution pour avoir un fond de JTextPane noir avec Nimbus ?

    Notre programme doit être utilisé sur tous les système et le look Nimbus de java 6 nous permet de conserver une certaine homogénéité entre les plate-formes.

    En tout cas, déjà merci... Maintenant, nous savons que le souci vient de Nimbus... C'était incompréhensible effectivement...

    Mais est-ce que quelqu'un connaît une solution pour garder Nimbus ?

  6. #6
    Membre émérite

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Par défaut
    Une solution de contournement semble disponible : http://stackoverflow.com/questions/6...nt-text-fields

    Benoit

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/06/2007, 13h59
  2. Réponses: 4
    Dernier message: 23/08/2006, 15h13
  3. Réponses: 3
    Dernier message: 28/02/2006, 15h39
  4. Comment changer la couleur de fond d'une ligne du TRichEdit
    Par tibi666 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/09/2005, 17h31
  5. Réponses: 4
    Dernier message: 26/07/2005, 10h45

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