2009-07-04 85 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()您可以使用它来检索实际更改。

希望这有助于你这样做的

相关问题