View Full Version : [Java] Allineamento testo in JTextPane....
qwerty_giggi
19-01-2007, 18:25
Ho creato un JTextPane......ma ho un problema con l'allineamento del testo.....tutti gli altri attributi sono ben impostati (font,bold,fontsize,ecc...)
la riga sembra che non la legge....
JTextPane textComponent = new JTextPane();
SimpleAttributeSet charAttributes = new SimpleAttributeSet();
StyleConstants.setFontSize(charAttributes, size);
StyleConstants.setFontFamily(charAttributes, fontName);
if (isBold()) StyleConstants.setBold(charAttributes,true);
if (isItalic()) StyleConstants.setItalic(charAttributes,true);
if (isUnderlined()) StyleConstants.setUnderline(charAttributes,true);
StyleConstants.setAlignment(charAttributes,StyleConstants.ALIGN_LEFT);
doc = textComponent.getStyledDocument();
int pos = doc.getEndPosition().getOffset();
try {doc.insertString(pos, testo, charAttributes);
} catch(BadLocationException ex) {throw new RuntimeException("This bad location ex shouldn't happen");}
Qualcuno ha qualche suggermento??grazie......
Prova ad applicare lo stile al paragrafo, prima o dopo aver inserito il testo, usando setParagraphAttributes di StyledDocument.
qwerty_giggi
21-01-2007, 11:22
.....non riesco a impostare l'allineamento....il setParagraphAttributes va applicato al Document.....
e poi l'istruzione
StyleConstants.setAlignment(charAttributes,StyleConstants.ALIGN_LEFT);
ci va comunque?me lo puoi spiegare.....non è molto chiara la situazione....grazie mille
Ho inserito queste due istruzioni prima dell'inserimento del testo.....
textComponent.getStyledDocument().setParagraphAttributes(doc.getStartPosition().getOffset(), propr[i].getLength(), charAttributes, true);
StyleConstants.setAlignment(charAttributes,StyleConstants.ALIGN_RIGHT);
insertString applica gli attributi di stile all'elemento bersaglio dell'inserimento. Data la struttura di uno StyledDocument, l'elemento bersaglio è una foglia che considera solo la porzione relativa agli attributi di carattere. L'allineamento è un attributo di paragrafo dunque viene scartato.
Se vuoi applicare un allineamento devi farlo avendo come elemento bersaglio un paragrafo.
insertString non considera l'allineamento
setParagraphAttributes considera l'allineamento.
I passaggi sono:
StyledDocument document = ...getStyledDocument();
int offset = document.getLength();
String text = ...testo da inserire;
SimpleAttributeSet attributes = new SimpleAttributeSet();
1. imposta gli attributi di carattere e paragrafo su attributes:
StyleConstants.set(attributes, ...);
StyleConstants.set(attributes, ...);
...eccetera
2. inserisci il testo applicando gli attributi di carattere:
document.insertString(offset, text, attributes);
3. applica gli attributi di paragrafo al paragrafo di inserimento:
Element paragraph = document.getParagraphElement(offset);
int start = paragraph.getStartOffset();
int length = paragraph.getEndOffset() - start;
document.setParagraphAttributes(start, length, attributes, false);
Nota che JTextPane possiede alcuni metodi che semplificano questo procedimento, in particolare setCharacterAttributes e setParagraphAttributes. Tali metodi si basano sulla posizione corrente del carrello. Per accodare del testo usando di volta in volta attributi di carattere e paragrafo diversi è sufficiente ricordarsi di spostare il carrello in fondo al documento dopo aver applicato lo stile alla posizione corrente. In questo caso, l'applicazione dello stile deve precedere l'inserimento del testo.
qwerty_giggi
22-01-2007, 18:26
ok....come al solito sei super esauriente....ciao ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.