我正在嘗試編寫一種支持某種着色的JTextPane:當用戶輸入文本時,我正在運行一些根據特定算法對文本進行着色的代碼。這很好。從Swing的撤消管理器中隱藏某些動作
問題是着色操作是使用撤銷管理器(具有EventType.CHANGE的DefaultDocumentEvent)進行註冊的。所以當用戶點擊撤消時,顏色消失。只有在第二次撤消請求時,文本本身才會回滾。
(請注意,着色算法有點慢,所以我不能在插入文本時對其着色)。
如果我試圖阻止CHANGE事件到達撤消管理器,那麼在多次撤消請求後我會得到一個異常:這是因爲文檔內容不符合可撤銷編輯對象的期望。
任何想法?
不要這樣做!我得到了一個非常糟糕的java內部異常,試圖這樣做。完整的Swing線程在我身上墜毀,每次重繪都拋出此異常:線程「AWT-EventQueue-0」中的異常java.lang.IllegalArgumentException:在sun.util.locale.provider.RuleBasedBreakIterator.checkOffset(RuleBasedBreakIterator。java:759)... – Adrodoc55 2015-12-28 22:30:11