2009-07-04 84 views

回答

3

一種方法是創建一個自定義文件和覆蓋insertString方法。例如:

class CustomDocument extends PlainDocument { 
    @Override 
    public void insertString(int offset, String string, AttributeSet attributeSet) 
      throws BadLocationException { 
     // Do something here 
     super.insertString(offset, string, attributeSet); 
    } 
} 

這可以讓你找出插入和否決它,如果你希望(不是通過調用super.insertString)。您可以使用此文檔應用此文檔:

editorPane.setDocument(new CustomDocument()); 
4

您可以使用DocumentListener通知文檔的任何更改。

因爲我還沒有留下評論,所以我只想說盡可能地使用監聽器比重寫類更好,就像上面給出的例子重寫PlainDocument一樣。

偵聽器方法將在JTextField,JTextArea,JEditorPane或JTextPane上工作。默認情況下,編輯器窗格使用HTMLDocument,而JTextPane使用StyledDocument。所以,你迫使組件使用一個PlainDocument來丟失功能。

如果您關注的是有關編輯文本之前它被添加到該文件,那麼你應該使用DocumentFilter

+0

但是,我將如何獲得實際更改? – Geo 2009-07-04 15:51:57

2

DocumentEvent界面,你有一個像的getOffset()方法的getLength()您可以使用它來檢索實際更改。

希望這有助於你這樣做的

相關問題