アマル:
私はJavaFXの持つ単純なテキストエディタを作るしようとしていると私はMenuItemのを押してもハンドラとして()textArea.undoを呼び出すとき、それは動作しません!私はそれをチェックアウトし、deafult isUndoableプロパティがfalseに設定されていることに気づいたので、私はCtrlキー+ Zを押すと、アンドゥ機能はのみ動作します!ので、どのように私はそれを変更できますか?
ここに私のコードは次のとおりです。
MenuItem undo = new MenuItem("Undo");
undo.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.CONTROL_DOWN));
undo.setOnAction(e -> textArea.undo());
私はまた、次のコードを試してみました:
textArea.isUndoable() = true;
それは私がそれを行うことはできませんが判明しました!
ファビアン:
このプロパティはできません、それは編集の内部履歴に依存するため、設定します。あなたはこのリストを直接変更することはできません。あなたのケースでは歴史だけで元に戻すには複数の状態を持っていないために起こります
あなたができるすべては歴史を見にあなたが使用することを望むようにしようでreplaceText
繰り返し(それを使用するか、他の編集方法を)、それでもそのグループの変更と編集履歴を完全に制御することができません。
String wrongText = "Hello Worlt";
textArea.insertText(0, wrongText);
textArea.deleteText(wrongText.length()-1, wrongText.length());
textArea.insertText(wrongText.length()-1, "d");
// now there should be 2 changes to undo