微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JTextPane不触发UndoableEditListener事件

如何解决JTextPane不触发UndoableEditListener事件

我在我的应用程序的JTextPane中添加了UndoManager,但无法正常工作:

UndoManager undoManager = new UndoManager();
textpane.getDocument().addUndoableEditListener(undoManager);

当我手动在文本窗格中键入内容,然后尝试撤消更改时,什么也没有发生undoManager.canUndo()总是返回false。

我还尝试了另一种添加管理器的方法,如下所示:

textpane.getDocument().addUndoableEditListener(new UndoableEditListener()
{
    @Override
    public void undoableEditHappened( UndoableEditEvent e )
    {
        System.out.println("UndoableEditEvent");
        undoMgr.addEdit(e.getEdit());
    }
});

使用上面的代码,我可以在输出窗口中看到undoableEditHappened( UndoableEditEvent e )在开始时被调用了一次(很可能是通过read调用来加载测试文件)。当我(通过关键字)或insertText(...)进行更改时,没有其他侦听器调用

我在StackOverflow中发现了一些类似的问题,但是解决方案始终沿用JTextPane自定义输入法的思路,我不是……不是我所知道的。

我可能忽略了什么?

解决方法

我发现了为什么UndoableEditListener没有触发的原因。

设置了JTextPane.read(Reader reader,Object object)侦听器后,我正在调用Document-我不知道的是,调用read(...)方法会创建并添加一个新的Document模型JTextPane,基本上删除了我以前对 old Document做过的一切。

解决方案

在调用Document

之后,使用JTextPane.read(...)模型

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?