2010-10-20 5 views
6

J'ai donc créé ma propre classe de volet de texte (extension de JTextPane) et j'utilise la méthode ci-dessous pour ajouter du texte. Cependant, le volet doit être modifiable pour pouvoir ajouter le texte, mais cela permet également à l'utilisateur de modifier ce qui se trouve dans le volet.Ajouter du texte à un JTextPane sans qu'il soit modifiable par l'utilisateur?

Quelqu'un peut-il me dire comment ajouter du texte au volet sans laisser l'utilisateur manipuler ce qu'il y a?

public void appendColor(Color c, String s) { 
    StyleContext sc = StyleContext.getDefaultStyleContext(); 
    AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c); 

    int len = getDocument().getLength(); 

    setCaretPosition(len); 

    setCharacterAttributes(aset, false); 

    replaceSelection(s); 

    setCaretPosition(getDocument().getLength()); 
} 

Répondre

6

Mise à jour du document directement:

StyledDocument doc = textPane.getStyledDocument(); 
doc.insertString("text", doc.getLength(), attributes); 
3
JTextPane pane = new JTextPane(); 
pane.setEditable(false); // prevents the user from editting it. 
// programmatically put this text in the TextPane 
pane.setText("Hello you can't edit this!"); 
+0

Je comprends, mais comment pourrais-je ajouter du texte à la fin du document? –

0

Ok Take 2:

JTextPane pane = new JTextPane(); 
pane.setEditable(true); 
DefaultStyledDocument document = (DefaultStyledDocument)pane.getDocument(); 
document.insertString("Hello you can't edit this!", document.getEndPosition().getOffset(), null);