0
私は、ユーザーがリストで選択した内容に基づいて変更可能な編集可能な情報を表示するエディタを持っています。したがって、元に戻す/やり直し機能を実装するためには、元に戻す/やり直す前に、編集するときに選択した項目を最初に再選択する必要があります。しかし、そのクラスを拡張しようとすると "No enclosing instance"というエラーが出るので、デフォルトのドキュメントイベントに機能を追加するのは難しいと思っています。DefaultDocumentEventを拡張できません。基本的なエディタの編集内容に機能を追加する方法はありますか?
は私の主張していないコードです。 JEditorPaneのsetSelectionとgetCurrentSelectionはありませんが、ユーザーが選択した項目を判断するためにこれらの機能を拡張バージョンとして使用しているようです。
public class MyUndoManager extends UndoManager {
private JEditorPane editor;
public MyUndoManager() {
super();
}
public void setEditor(JEditorPane editor) {
this.editor = editor;
}
@Override
public synchronized boolean addEdit(UndoableEdit anEdit) {
if (anEdit instanceof javax.swing.text.AbstractDocument.DefaultDocumentEvent) {
try {
MyDocumentEvent evt = ((MyDocumentEvent) anEdit);
evt.setCallbackObj(editor.getCurrentSelection());
return super.addEdit(anEdit);
} catch (Exception e) {
e.printStackTrace();
return false;
}
} else {
return super.addEdit(anEdit);
}
}
private class MyDocumentEvent extends javax.swing.text.AbstractDocument.DefaultDocumentEvent {
private Object callbackObj;
public void setCallbackObj(Object o) {
this.callbackObj = o;
}
@Override
public void undo() throws CannotUndoException {
editor.setSelection(o);
super.undo();
}
@Override
public void redo() throws CannotRedoException {
editor.setSelection(o);
super.redo();
}
}
}