Bonjour !
Encore moi pour un soucis avec les styles et les JTextPane. Ce n'est pas le nombre de source et de questions qui manque mais j'obtiens une exception que je ne comprend pas.
Et je ne vois pas ce qui ne va pas dans mon code (et je crois qu'il fonctionnait avant...mais j'ai du changer un truc si ca ne marche pas now ^^)
Le code qui ne marche pas, c'est le code qui applique un style (gras) à une partie du texte d'un JTextPane.
StyledDocument sd = this.getStyledDocument();
StyleContext newContext = new StyleContext();
NamedStyle newStyle = newContext.new NamedStyle();
newStyle.addAttribute(StyleConstants.Bold,StyleConstants.Bold);
//Seulement si un texte est sélectionné
if(this.getSelectedText()!=null)
{
for(int i=this.getSelectionStart();i<this.getSelectionEnd();i++)
{
sd.setLogicalStyle(i, newStyle);
}
}
J'ai essayé également ceci, en m'inspirant d'une source :
StyledDocument sd = this.getStyledDocument();
StyleContext newContext = new StyleContext();
NamedStyle newStyle = newContext.new NamedStyle();
newStyle.addAttribute(StyleConstants.Bold,StyleConstants.Bold);
//Seulement si un texte est sélectionné
if(this.getSelectedText()!=null)
{
int iStart = this.getSelectionStart();
sd.setCharacterAttributes(iStart, this.getSelectionEnd()-iStart, newStyle, false);
}
Les deux lignes en gras sont les lignes qui générent l'erreur (et la même erreur).
Ce qui me rend l'erreur plus compliquée, c'est que je n'arrive pas à remonter jusqu'à un code que j'ai écrit...
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.text.StyleConstants$FontConstants cannot be cast to java.lang.Boolean
at javax.swing.text.StyleConstants.isBold(StyleConstants.java:382)
at javax.swing.text.StyleContext.getFont(StyleContext.java:171)
at javax.swing.text.DefaultStyledDocument.getFont(DefaultStyledDocument.java:782)
at javax.swing.text.LabelView.setPropertiesFromAttributes(LabelView.java:128)
at javax.swing.text.LabelView.sync(LabelView.java:39)
at javax.swing.text.LabelView.getFont(LabelView.java:191)
at javax.swing.text.GlyphPainter1.sync(GlyphPainter1.java:205)
at javax.swing.text.GlyphPainter1.getSpan(GlyphPainter1.java:42)
at javax.swing.text.GlyphView.getPreferredSpan(GlyphView.java:534)
at javax.swing.text.FlowView$LogicalView.getPreferredSpan(FlowView.java:707)
at javax.swing.text.FlowView.calculateMinorAxisRequirements(FlowView.java:216)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:326)
at javax.swing.text.BoxView.layout(BoxView.java:691)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1701)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:899)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1632)
at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1372)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
at java.awt.Container.layout(Container.java:1432)
at java.awt.Container.doLayout(Container.java:1421)
at java.awt.Container.validateTree(Container.java:1519)
at java.awt.Container.validate(Container.java:1491)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:635)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:127)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.text.StyleConstants$FontConstants cannot be cast to java.lang.Boolean
...(et ça continue ;) dans le même type)
Avez-vous une idée d'où ça vient ?
Merci beaucoup.
A+
Cbil