Un jtextpane notice : jeu de styles prédéfinis et insertion texte très facile ! (avec l'aimable aide de sheorogath)

Soyez le premier à donner votre avis sur cette source.

Vue 9 761 fois - Téléchargée 373 fois

Description

C'est un JTextPane qui peut servir de notice : il a déjà son javax.swing.text.Document intégré, son jeu de javax.swing.text.Style et une fonction qui permet d'ajouter très simplement du texte, sans que l'utilisateur ait à agir sur le Document.

Une nouvelle version, grâce à l'aide Sheorogath, devait voir le jour : mais, ne me jugeant pas capable de produire du beau en faisant un mix de son code et du mien ... j'ai décidé de laisser tomber ce projet.

Source / Exemple :


package com.loloof64.commons;

import java.awt.Color;

import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;

/**

  • Un JTextPane avec un jeu de styles prédéfinis, et une méthode simplifiée
  • d'ajout de texte stylisé, afin de construire des panneaux notices
  • d'application .<br>
  • Une bonne idée d'utilisation de ce panneau : coinjontement avec le
  • panneau principal dans un JTabbedPane .
  • @author laurent bernabé
*
  • /
public class JNoticePane extends JTextPane { /**
  • Variable de série .
  • /
private static final long serialVersionUID = 2373862850234541630L; /**
  • Le document associé .
  • /
private DefaultStyledDocument documentAssocie = new DefaultStyledDocument(); /**
  • Constructeur .
*
  • /
public JNoticePane(){ setDocument(documentAssocie); definirLesStyles(); } public void definirLesStyles(){ Style styleRacine = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE); Style racine = this.addStyle("normal", styleRacine); StyleConstants.setBold(racine, false); Style titreGeneral = this.addStyle ("titreGeneral", styleRacine); StyleConstants.setBold(titreGeneral, true); StyleConstants.setFontSize(titreGeneral, 20); StyleConstants.setFontFamily(titreGeneral,"Times New Roman"); StyleConstants.setBackground(titreGeneral, Color.green); StyleConstants.setForeground(titreGeneral, Color.blue); Style noteTresImportante = this.addStyle ("noteTresImportante", titreGeneral); StyleConstants.setBackground(noteTresImportante, Color.yellow); StyleConstants.setForeground(noteTresImportante, Color.red); Style titreNiveau1 = this.addStyle ("titreNiveau1", styleRacine); StyleConstants.setUnderline(titreNiveau1, true); StyleConstants.setForeground(titreNiveau1, Color.red); Style titreNiveau2 = this.addStyle ("titreNiveau2", titreNiveau1); StyleConstants.setForeground(titreNiveau2, Color.green); } /**
  • Ajoute un texte stylisé juste àprès la fin du document associé.
  • @param text - String - Texte avec ou sans "\n" .
  • @param style String : l'une des chaînes suivante :
  • <ul>
  • <li> "normal"
  • <li> "titreGeneral"
  • <li> "titreNiveau1"
  • <li> "titreNiveau2"
  • <li> "noteTresImportante"
  • </ul>
  • @throws BadLocationException - Normallement si cela arrive, c'est de
  • ma propre faute. En effet, la fonction interne appelée (Document#insertString) comporte
  • ce risque, mais l'utilisation que j'en fait ne devrais pas le faire apparaître.
  • /
public void appendStyledLineText(String text, String nomStyle) throws BadLocationException{ documentAssocie.insertString(documentAssocie.getLength(), text, documentAssocie.getStyle(nomStyle)); } /**
  • Ajoute un texte stylisé dans le document associé, à la position précisée
  • par l'entier offset.
  • @param offset - int - Offset d'insertion du texte .
  • @param text - String - Texte avec ou sans "\n" .
  • @param style String : l'une des chaînes suivante :
  • <ul>
  • <li> "normal"
  • <li> "titreGeneral"
  • <li> "titreNiveau1"
  • <li> "titreNiveau2"
  • <li> "noteTresImportante"
  • </ul>
  • @throws BadLocationException - Si l'offset ne correspond pas.
  • /
public void appendStyledLineTextAt(int offset, String text, String nomStyle) throws BadLocationException{ documentAssocie.insertString(offset, text, documentAssocie.getStyle(nomStyle)); } /**
  • Retourne le style de nom nomStyle.
  • @param nomStyle - String : l'une des chaînes suivante :
  • <ul>
  • <li> "normal"
  • <li> "titreGeneral"
  • <li> "titreNiveau1"
  • <li> "titreNiveau2"
  • <li> "noteTresImportante"
  • </ul>
  • /
public Style getStyle(String nomStyle){ return documentAssocie.getStyle(nomStyle); } }

Conclusion :


Je pense à une version qui prend en entrée un fichier XML (avec des tuples {style,texte} ).

Merci à Sheorogath, membre de Codes Sources, pour ses commentaires très instructifs :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_loloof64
Messages postés
350
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
6 novembre 2012
-
Ouh là : désolé pour le retard. Merci Sheorogath d'avoir laissé ma source :)
till2
Messages postés
11
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
3 juin 2007
-
ok sheorogath, merci
sheorogath
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
11 -
till2 : http://www.javafr.com/code.aspx?ID=42977

loloof64 : c'est ce que je voulais que tu fasse de ta source ^^ bon je la laisse quand meme je n'ai pas implemente le hightligth
till2
Messages postés
11
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
3 juin 2007
-
Merci c'est sympa ...J'ai testé avec une base de donnée (le champ type OLE, car c'est une base ACCESS mais rien y fait ! je suis bloqué ! ) Donc si t'a un exemple de serialisation ou quelque chose je prend volontier !
Merci
sheorogath
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
11 -
RTFEditorKit
je te copis un morceau de code dans la soiree si j'y pense :p

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.