假設我在JPanel中有一個JEditorPane。每次用戶在JEditorPane組件中輸入/粘貼文本時,我都希望能夠執行回調。我應該創建什麼類型的監聽器?我應該爲什麼JEditorPane事件創建偵聽器?
3
A
回答
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
2
在DocumentEvent界面,你有一個像的getOffset()方法和的getLength()您可以使用它來檢索實際更改。
希望這有助於你這樣做的
相關問題
- 1. Backbone:我應該聽什麼事件
- 2. 爲什麼我的事件偵聽器不止一次發射?
- 3. 爲什麼symfony2不會調用我的事件偵聽器?
- 4. 如何爲服務器端React創建事件偵聽器?
- 5. 事件偵聽器
- 6. 任何方式來創建「狀態」偵聽器而不是「事件」偵聽器?
- 7. 將事件偵聽器傳遞給事件偵聽器?
- 8. javascript jquery創建和偵聽事件
- 9. 如何爲Appcelerator Ti.Paint的版本1.4創建事件偵聽器?
- 10. 我應該在聽DependencyProperty更改時使用弱事件偵聽器嗎?
- 11. 將一個事件偵聽器更改爲另一個事件偵聽器?
- 12. 爲什麼此附加事件偵聽器未執行?
- 13. 爲什麼在函數調用中使用事件偵聽器?
- 14. 創建偵聽器onRotate()
- 15. 創建一個刪除事件偵聽器,並添加事件偵聽器這個功能
- 16. 事件偵聽器5
- 17. 事件偵聽器在evently
- 18. 蠟染事件偵聽器
- 19. ZF3 onRoute事件偵聽器
- 20. reactjs事件偵聽器window.resize
- 21. 應該刪除HTTPService()對象的匿名事件偵聽器嗎?
- 22. 爲什麼我的事件偵聽器不在laravel 5中觸發?
- 23. 爲什麼我的事件偵聽器不在函數內部工作?
- 24. 爲什麼我的事件偵聽器不能在點擊時顯示模態?
- 25. 爲什麼我的添加事件偵聽器無法正常工作?
- 26. 如何創建偵聽Windows事件的應用程序?
- 27. 鉻忽略NPAPI事件偵聽器只有在創建動態
- 28. 清理動態創建的XUL元素的事件偵聽器?
- 29. 如何使用Marionette創建全局按鍵事件偵聽器
- 30. 添加事件偵聽器到動態創建元素
但是,我將如何獲得實際更改? – Geo 2009-07-04 15:51:57