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 :

méthode textFormat en java


Sujet :

Java

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut méthode textFormat en java
    Bonjour,

    existe-il en java une fonction qui permette de formater du texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String txt = "c'est un exemple";
    je voudrais mettre en gras "un" et donc obtenir "c'est <b>un</b> exemple"
    avec une méthode du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt.textFormat("bold", 6, 8);
    merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 093
    Par défaut
    La classe Font permet ce genre de chose mais ce n'est pas vraiment du "formatage". Mais comme tu ne specifie pas la "cible" du texte, difficile de voire.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par pol2095 Voir le message
    existe-il en java une fonction qui permette de formater du texte
    Tout d'abord, un String représente simplement du texte, pas de la mise en forme. Donc pour mettre en gras une partie, ce n'est pas sur le String qu'il va falloir jouer mais sur le composant utilisé pour afficher le texte.
    Il faudrait préciser sur quel environnement tu es. En supposant que c'est une application desktop, tu peux utiliser un JLabel qui supporte le formatage HTML (Si tu lui passes un string = "c'est <b>un</b> exemple", tu auras bien un en gras).

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    Citation Envoyé par wax78 Voir le message
    La classe Font permet ce genre de chose mais ce n'est pas vraiment du "formatage". Mais comme tu ne specifie pas la "cible" du texte, difficile de voire.
    j'utilise ce code pour détecter la position des mots dans le string que je veux mettre en gras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String monTexte = "Il y a 3600 secondes dans 1 heure et 24 heures dans une journée";
    Matcher txtExp = Pattern.compile("dans").matcher(monTexte);
    while (txtExp.find()) {
         //txtExp.start()
         //txtExp.end()
    }
    mais comment se sert-on de la classe font, je veux juste récupérer le string modifier ?
    merci

  5. #5
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Billets dans le blog
    1
    Par défaut
    La class String ne fait que stocker une chaine de caractères (contient un attributs de type char []), et implémente des méthodes qui permettent de manipuler cette chaine (remplacement, position...), elle ne gère pas la manière dont la chaine est affichée. Pour gérer le formatage, tu peut utiliser un JTextFiled, ou un JTextArea au quel tu spécifie un font avec la méthode monjtext.setFont (Font font), ce font va s'applique au texte en entier.
    Sinon, tu peut utiliser la méthode monjboutton.setAction (new StyledEditorKit.BoldAction ()) par exemple, a chaque fois que tu clique sur le boutton, c'est seul le partie du texte qui est selectionnée qui sera formatée.
    Avec un JTextPane, tu peut aussi detecter la forme du texte selectionné.
    Bon courage.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    si j'utilise un JTextField
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JTextField jtf = new JTextField("Il y a 3600 secondes dans 1 heure et 24 heures dans une journée");
    Font police = new Font("Arial", Font.BOLD, 14);
    jtf.setFont(police);
    top.add(jtf);
    c'est tout le texte qui passe en gras et pas juste le mot "dans", comment sélectionner une plage de caractères avec setFont.

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 093
    Par défaut
    Dans ce cas, mon idée n'est pas la bonne. Et donc ce que disais hwoarang était une bonne solution que tu ne sembles pas avoir testé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Font font = new Font("Serif", Font.PLAIN, 60);
    JLabel label = new JLabel();
    String labelText =    "<html><B>Bold</B>Bold and <I>Italic</I> Text</html>";
    label.setFont(font);
    label.setText(labelText);
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    je ne connais pas le texte rentré par l'utilisateur à l'avance, le formatage doit être dynamique, il n'existe aucune méthode en java qui permette de faire ça ?

  9. #9
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 093
    Par défaut
    "Il doit être dynamique" ... mais tu ne nous donnes pas les règles. C'est donc impossible ni pour nous, ni pour un programme.

    Si tu connais les règles alors tu pourras rajouter les balises html dans le string comme il faut en java.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    La classe StringBuilder ça ne sert pas à ça ?

  11. #11
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 093
    Par défaut
    StringBuilder est bien quand on concatène des chaines de string. Donc rien avoir avec ce problème. Bien que rien n'interdise son utilisation pour diverses raisons.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    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
    C'est vrai que c'est un peu dure de suivre ton problème parce qu'il existe de très nombreuses solutions, chacune très bonne ou très mauvaise suivant le cas d'utilisation.

    Si tu veux juste afficher une phrase et mettre un mot en gras, tu peux utiliser un JLabel comme on te l'a suggéré. Tu peux ensuite écrire une méthode qui remplacera dynamiquement le contenu du JLabel en faisant monJLabel.setText(traitement()); avec traitement() qui prend un chaine "truc muche truc en gras" et qui la remplace par "<html>truc muche <b>truc</b> en gras</html>" (à vérifier que setText peut bien prendre du html. Ce n'est pas sûr).

    Sinon, tu peux utiliser un JTextPane avec au choix un StyledDocument ou un HTMLDocument. Dans les deux cas, tu obtiens un traitement de texte capable de faire tout ce qu'on peut attendre d'un traitement de texte classique.

    Mettons que tu opte pour un HTMLDocument, tu pourras alors modifier "ma chaine" par "ma <b>chaine</b>" et insérer le tout dans ton JTextPane.

    Est-ce que ça répond à tes questions ?

Discussions similaires

  1. Méthode booléenne en Java
    Par Eric_beauvais dans le forum Général Java
    Réponses: 3
    Dernier message: 25/08/2013, 05h03
  2. Réponses: 2
    Dernier message: 29/12/2011, 08h45
  3. Les méthodes pour apprendre Java le soir et le week end
    Par hibou107 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/04/2010, 13h10
  4. Réponses: 1
    Dernier message: 04/06/2008, 17h19
  5. Méthode native en Java
    Par air75 dans le forum Langage
    Réponses: 16
    Dernier message: 23/01/2008, 17h54

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