将文本添加到JTextPane而不让用户可编辑?

时间:2010-10-20 02:11:52

标签: java swing jtextpane

所以我创建了自己的文本窗格类(扩展JTextPane),我正在使用下面的方法向其中添加文本。但是,窗格需要可以编辑才能添加文本,但这样用户也可以编辑窗格中的内容。

任何人都可以告诉我如何在不让用户操纵那些内容的情况下向窗格添加文本吗?

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());
} 

4 个答案:

答案 0 :(得分:7)

直接更新文档:

StyledDocument doc = textPane.getStyledDocument();
doc.insertString("text", doc.getLength(), attributes);

答案 1 :(得分: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!");

答案 2 :(得分: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 );

答案 3 :(得分:-1)

JTextPane myTextArea = new JTextPane();
myTextArea.setEditable(false);