Un modo per applicare stili al testo è di aggiungere del testo nel JTextPane specificando un set di attributo che determinano lo stile; in particolare puoi usare un SimpleAttributeSet per definire un set di attributi; i SimpleAttributeSet si compongono l'uno sull'altro per creare stili sempre piu complessi. Se ad esempio hai un SimpleAttributeSet che definisce uno stile del testo con font courier di colore rosso, per avere uno stile courier rosso e grassetto basta creare un nuovo SimpleAttributeSet 'attaccato' al primo e aggiungere la proprietà del grassetto.
Qui ti roporto un esempio in cui parto da uno stile normale che compongo via via con altri stili aggiungendo le proprietà di colore del testo, dimensione, font, grassetto e alla fine scrivo in un JTextPane. Dovrebbe funzionare anche se non l'ho provato:
codice://Creo un set di attributi SimpleAttributeSet normal = new SimpleAttributeSet(); //Creo uno stile colored che eredita da normal //e ha in più il colore rosso SimpleAttributeSet colored = new SimpleAttributeSet(normal); //imposto il colore StyleConstants.setForeground(colored, Color.RED); //Creo uno stile courier che eredita da colored //e ha in più il font Courier SimpleAttributeSet courier = new SimpleAttributeSet(colored); //Imposto il font StyleConstants.setFontFamily(courier, "Courier"); //Creo uno stile sized che eredita da courier //e ha in più la dimensione impostata a 16 SimpleAttributeSet sized = new SimpleAttributeSet(courier); //Imposto la dimensione StyleConstants.setFontSize(sized, 16); //Creo uno stile bold che eredita da sized //e ha in più ha il grassetto SimpleAttributeSet bold = new SimpleAttributeSet(sized); //Imposto il grassetto StyleConstants.setBold(bold, true); //Scrivo il nome dello stile per ogni stile creato //pane è un JTextpane try{ //Ricavo la posizione finale del testo in pane int p = pane.getDocument().getEndPosition().getOffset() - 1; pane.getDocument().insertString(p, "normal", normal); p = pane.getDocument().getEndPosition().getOffset() - 1; pane.getDocument().insertString(p, "colored", colored); p = pane.getDocument().getEndPosition().getOffset() - 1; pane.getDocument().insertString(p, "courier", courier); p = pane.getDocument().getEndPosition().getOffset() - 1; pane.getDocument().insertString(p, "sized", sized); p = pane.getDocument().getEndPosition().getOffset() - 1; pane.getDocument().insertString(p, "bold", bold); } catch(BadLocationException e){ System.out.println(e); }![]()

Rispondi quotando