2010-03-02 85 views
2

我有一個JTextPane,我可以修改其中的一部分文本的樣式。如何設置要在JTextPane中鍵入的文本的樣式

假設沒有選中JTextPane,我希望能夠修改尚未包含的部分的樣式,也就是說,要設置用戶將要輸入的樣式下一個。

使用長度= 0的setCharacterAttributes(start,length,style,attributeSet,replace)似乎沒有這樣做。

回答

4

如果您在文本窗格中的文檔設置DocumentFilter(假設你使用的是AbstractDocument子類,它具有setDocumentFilter方法),您可以將它插入或更換時屬性設置爲文本。

編輯:

作爲一個簡單的例子,這是一個DocumentFilterreplace方法的實現,原來的文本顯示爲紅色,當用戶鍵入 'A':

public void replace(FilterBypass fb, int offset, int length, 
    String text, AttributeSet attrs) throws BadLocationException 
{ 
    if (text.startsWith("a")) 
    { 
    SimpleAttributeSet newAttrs = new SimpleAttributeSet(); 
    StyleConstants.setForeground(newAttrs, Color.RED); 
    attrs = newAttrs; 
    } 

    super.replace(fb, offset, length, text, attrs); 
} 
1

試這個:

doc.setCharacterAttributes(0, doc.getLength() + 1, attributeSet, false); 
+1

這將改變整個文件的樣式,這不是我想要的。我只想改變要輸入的字符的風格。 – 2010-03-03 13:34:17

相關問題