在 JTextPane 中撤消和重做忽略样式更改

Undo And Redo In JTextPane Ignoring Style Changes

我想知道是否有一种方法可以在使用 Swing 的 UndoManager 时忽略 JTextPane 中的文本样式更改?

我从未尝试过,但我想您可以创建自定义 UndoManager。

您需要覆盖 undoableEditHappend(...) 方法以忽略属性更改:

@Override
public void undoableEditHappened(UndoableEditEvent e)
{
    //  Check for an attribute change

    AbstractDocument.DefaultDocumentEvent event =
        (AbstractDocument.DefaultDocumentEvent)e.getEdit();

    if  (event.getType().equals(DocumentEvent.EventType.CHANGE))
        return
    else
        super.undoableEditHappened(e);
}