didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
15 sept. 2007 à 23:01
Drickflow
Messages postés1Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention26 mars 2012
-
26 mars 2012 à 08:13
Bonjour à tous.
J'ai un JTextPane. lorsque j'essaye d'affecter à une partie de texte précise une couleur (ou qqc comme ca: police, ...), j'obtient une exception "java.lang.IllegalStateException: Attempt to mutate in notification".
code utilisé : doc.setCharacterAttributes(start, length, doc.getStyle(styles[a]), true);
où "doc" et le StyledDocument du JTextPane en cours; "start" le debut de l'endroit à colorer; "length" la taille de la chaine à colorer.
Est ce que vous pouvez me dire comment faire pour éviter ce genre d'erreure ?
merci.
A voir également:
Java.lang.illegalstateexception: attempt to mutate in notification
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 16 sept. 2007 à 11:20
je paris que tu es dans une methode de notification ...; cette erreur se produit generalement lorsque tu essais de modifier la source d'une evenement ...
et c'est ce qui ce passe avec ton doc.set.....
tu peux essayer un truc du genre :
SwingUtilities.invokeLater(new Runnable() {
public void run() {
doc.setCharacterAttributes(start, length, doc.getStyle(styles[a]), true);
}
});
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 16 sept. 2007 à 11:48
Slt
effectivement, avec le morceau de code que tu m'a donné je n'ai plus l'erreur du début. Par contre j'en ai une autre:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: No match available
voila la méthode (l'exception se produit à l'intérieure du run de "SwingUtilities ...).
pattern = Pattern.compile("" + cmds[a] + "" + motifs[a]);
matcher = pattern.matcher(this.getText());
while (matcher.find()) {
try{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
doc.setCharacterAttributes(matcher.start(), matcher.end()-matcher.start(), doc.getStyle(styles[a]), true);
}
});
}catch (Exception ex){
ex.printStackTrace();
}
}
Les variables pattern et matcher sont déclarées private (elles ne sont pas dans la méthode elle même).
merci.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 16 sept. 2007 à 13:03
Slt.
Par exemple: je cherches "%\\d+" dans "%1202145A12"; le programme doit me renvoyer la chaine "%1202145" car elle correspond bien au motif définit précédemment.
j'ai ajouté au code un "System.out.println("" + matcher.group());" pour voir il n'y avait vraiment rien.
Résultat obtenu : "%1202145".
L'exception ne se produit que dans la ligne doc.setCharacterAttributes(matcher.start(), matcher.end()-matcher.start(), doc.getStyle(styles[a]), true); (au moment de changer le style).
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 16 sept. 2007 à 13:06
ben je sais pas tu dois avoir un pb avec les index de debut et de fin ...
essai pt ca :
pattern.matcher(doc.getText()); // suis pas sur du nom de la methode
quand je travail sur le Texte d'un JTextPane j'utilise toujours ddocument
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"