Bonjour,
J'aimerais savoir comment connaître le style qui est appliqué à un texte d'un JTextPane ?
J'ai compris comment appliquer un style (mise en gras par exemple) à une partie du texte du JTextPane mais je n'arrive pas à récupérer l'information "ce texte/caracteres/selection est en gras, italique..."
Pour mettre en gras (par exemple), j'écris le code suivant :
StyledDocument sd = this.getStyledDocument();
StyleContext newContext = new StyleContext();
NamedStyle newStyle = newContext.new NamedStyle();
newStyle.addAttribute(StyleConstants.Bold,StyleConstants.Bold);
if(this.getSelectedText()!=null)
{
//mise en gras de la sélection
for(int i=this.getSelectionStart();i==this.getSelectionEnd();i++)
{
sd.setLogicalStyle(i, newStyle);
}
}
Pour récupérer le style, j'ai regardé les méthodes de StyledDocument, Style, AttributeSet, Document, Element... aucune ne m'inspire pour pouvoir faire ça.
J'ai vu une réponse de JHelp sur ce sujet là : http://www.javafr.com/infomsg_POSITION-CURSEUR-DANS-OBJET-JTEXTPANE_136907.aspx
mais ca ne marche pas chez moi. (le texte retourné est toujours "Defaut" - pas d'indicateur Bold, Italic...)
En fait tu as la méthode getStyledDocument(), qui te renvoie le doucument entier avec le style.
(package java.swing.text)
StyledDocument document=monJTextPane.getStyledDocument();
Ensuite avec ce document tu récupere le style appliquer :
Style style=document.getLogicalStyle(positionDuCaractere);
ensuite tu recupéres le nom.
String nom=style.getName();
Et là :
if(nom.toLowerCase().indexOf("bold")>=0)
//c'est gras
if(nom.toLowerCase().indexOf("italic")>=0)
//c'est italic
...
JHelp
pour moi, style.getName(); renvoie "defaut" tout le temps.
Savez-vous comment faire ?
Merci beaucoup.
A+
Cbil