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 :

Formater un texte


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut Formater un texte
    Bonjour à tous,

    Je recherche une méthode pour formater un texte, voila exactement ce que je veux:
    1/ je puisse mettre en gras, italique et surligner ou encore surligner au fluo (si possible) le texte.
    2/ je souhaite avoir un texte souligné. des que le souris survole le texte souligné, alors s'affichera une sorte de bulle d'aide avec un commentaire dedans. Cependant, chaque partie souligné aura un commentaire différent (ce ne sont pas réellement des commentaires, mais plutot des URL)
    3/ Les partie souligné peut etre clicable et alors s'ouvrirait une nouvelle fenetre.

    J'ai vu qu'il yavait un truc en JFACE qui pourrait faire ca, mais je ne sais pas faire fonctionner JFace sous ECPLIPSE (j'ai deja commencé sous eclipse le projet).

    Je vous remercie d'avance.

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Tout ça est réalisable grâce au JTextPane il me semble. Fait une petite recherche pour des explications sur son utilisation, mais je pense qu'il permet de faire ce que tu veux. Bonne chance.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Merci à toi,

    je vais lire la doc.
    Toutefois je laisse le topic ouvert pour d'autres idées

  4. #4
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Bonjour,

    j'ai donc utilisé un JPane, mais voila, j'ai un petit souci:

    J'ai lu la fac (http://java.developpez.com/faq/gui/?page=awtSwingTexte) et utilisé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /** Redéfini pour choisir l'effet de style à utiliser */
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
            try {               
                    if ( str.equals ("HELP") ) {
                            super.insertString (offs, str, getStyle ("styleOp"));
                    } else {
                             /** Sinon le texte est écrit avec le style "styleNormal" */
                            super.insertString (offs, str, getStyle ("styleNormal"));
                    } 
            } catch (BadLocationException e) {
                    System.out.println ("Tuuuttt erreur Insere");
            } 
    }
    Mais moi, j'ai des string à inserer mais pas de cette manière:
    Dans cet exemple, on regarde si le string = "HELP", si c'est le cas, on l'insert avec un style, sinon, on l'insert avec un autre style (style normal)
    Mais moi j'ai un int (un flag) avec mes String, si ce flag == 1, alors on est dans le meme cas que si string == "help".
    Donc on résumé:
    Si flag == 1, on insert le string avec un style "rouge" (par exemple)
    Sinon, on l'insert de maniere normale. J'ai donc modifié ce qui est en haut pour donner ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void insertString(int offs, String str, AttributeSet a, int flag) throws BadLocationException
    	{	try
    		{	
    			if ( flag == 1 )
    			{	super.insertString (offs, str, getStyle ("styleOp"));
    			}
    			else // sinon le texte est ecrit avec le style "styleNormal"
    			{	super.insertString (offs, str, getStyle ("styleNormal"));
    			}
    		}
    		catch (BadLocationException e)
    		{	System.out.println ("Tuuuttt erreur Insere");
    		}
    	}

    Mais je ne sais pas comment on l'utilise???
    voila je Jpane:
    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
    private JTextPane getJTextPane() {
    		if (jTextPane == null) {
    			jTextPane = new JTextPane();
    			jTextPane.setBounds(new Rectangle(6, 178, 1011, 389));
    			style = new StyleAide (new StyleContext ());
    			jTextPane.setDocument (style);		
    			jTextPane.setText("test1");
    			try
    			{
    				style.insertString(style.getLength(), "test flag 1", jTextPane.getStyle("styleOp"), 1);
    			}
    			catch (BadLocationException e)
    			{	
    				System.out.println ("Tuuuttt erreur Insere");
    			}
     
    		}
    		return jTextPane;
    	}
    mais cette denriere ne fonstionne pas, il n'ya pas d'erreur, mais mon ordi rame (HDD qui gratte) et mon jframe apparait gris sans rien dedans. Je suis obligé de l'arreter, sinon il n'en fini pas.

    Quelqu'un peut-il m'aider?

    PS/ mon Jpane est dans une fenetre où il y a d'autres elements.

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu ne peux pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void insertString(int offs, String str, AttributeSet a, int flag)
    Cette méthode insertString, ce n'est pas toi qui l'appelle, elle est prévue de base et doit donc restée telle qu'elle...

    La solution, c'est que flag soit un attribut, et que tu aies qqchose qui change cet attribut flag (je sais pas ce que tu veux faire exactement, mais imaginons que quand on click sur un bouton ca change flag)...

  6. #6
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Tout dabors merci pour cette précision.
    Je m'explique pour mon probleme.
    J'ai un tableau de string tab[500][2]
    Dans tab[i][0] ya des phrases (venant d'un texte) et dans tab[i][2] ya des int (un flag) qui peut etre =0 ou 1. (bien entendu je trnansforme le string en int )

    Je parcours ensuite le tab[500] et prends un par un les elements. Je ragarde le flag du string en cours d'analyse: si c'est =0, je prend un style normal et je l'insere dans le JPANE, sinon, si flag =1, je prends un style particulier et je l'insere aussi dans JPANE.

    Voilà

    J'espere que cela pourra vous aider pour mieux me guider.

    D'avance un grand merci

  7. #7
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Personne n'a une petite idée pour faire ceci?
    J'essaye depuis le début d'aprem, mais j'arrive à rien

  8. #8
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Je relance un appel d'aide

    D'avance merci pour ceux qui me feront avancer dans ce probleme!

    PS: si au moins quelqu'un pourrait juste me dire comment faire pour utiliser l'exemple que j'ai cité dans l'un des deux premiers post

  9. #9
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Je ne comprends pas vraiment ce que tu veux faire ....
    Le insertString permet de gérer les insertions effectuées par l'utilisateur dans ton texte ... là tu parles uniquement d'un texte que tu as déjà ...

  10. #10
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Oui, c'est vrai que je suis peut-être pas tres clair

    Je me reexplique tres rapidement:
    1/ J'ai une matrice de String
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab[0][0]  = "bonjour"; tab[0][1] = "0";
    tab[1][0]  = "demain"; tab[1][1] = "1"
    2/ J'ai un textPane
    3/ je lis mon tab
    a/ lorsque dans la colonne 2 j'ai "0", je veux inserer le texte en italique
    b/ lorsque dans la colonne 2 j'ai "1", je veux insérer le texte en gras

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le tab[0][1] ="0", j'insere tab[0][0]="bonjour" en italique dans le jPane
    Voila, cet exemple permet, j'espere, de mieux comprendre la philosophie du probleme.

    D'avance merci

  11. #11
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Regarde ce post là (qui est là pour un tout autre sujet) tu auras un exemple de comment créer ton JTextPane avec des styles comme tu le veux ...
    http://saloon.javaranch.com/cgi-bin/...c&f=2&t=015281
    est mon ami

  12. #12
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Merci

    Je viens de jeter uncop d'oeil, mais je dois avouer que je ne commprends toujours pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void addStylesToDocument(StyledDocument doc)
    permet d'ajouter des styles si je comprends bien

    Mais quand insere-t-il du texte avec l'une ou l'autre forme?

    MERCI

  13. #13
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    doc.insertString(doc.getLength(), initString[i], doc.getStyle(initStyles[i]));

  14. #14
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Par défaut
    Ok, ca fonctionne parfaitement

    Je n'avais pas vu qu'on "attachait" le docStyle au jPane

    Par contre, encore une toute petite question
    Peut-on ajouter sur l'un des deux styles un "mouseOver". Je m'explique:
    Je souhaiterai ajouter, lorsque le Tab[i][1] ="1", un info. Lorsque la souris survole cette partie du texte, alors une info apparait (comme pour les aides).
    Personnelement, ca me parait compliqué à faire car je suppose que je dois memoriser les emplacement de ces phrases dans le JPane!!

    Mais je pose tout de meme la question.
    Cela dit, encore un grand merci pour l'aide apportée.

  15. #15
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Sur le mouseOver, je ne sais pas du tout pour le coup ... (A part à faire une usine à gaz à la main) A voir, peut être que Janitrix pourrait te renseigner ...

Discussions similaires

  1. Formater du texte en shell
    Par YéTeeh dans le forum Linux
    Réponses: 8
    Dernier message: 19/01/2006, 11h46
  2. Formater un texte dans une expression
    Par stéphane_ais2 dans le forum Access
    Réponses: 5
    Dernier message: 18/10/2005, 13h52
  3. Format champ texte
    Par Smint dans le forum Access
    Réponses: 4
    Dernier message: 15/09/2005, 16h27
  4. [LG]Formater le texte dans un WriteLn
    Par busy999 dans le forum Langage
    Réponses: 16
    Dernier message: 15/11/2003, 11h16
  5. Envoi de mail au format Rich-Text
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2003, 16h27

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