Eu estou tentando fazer um editor de texto simples com o JavaFX e quando eu chamo textArea.undo () como um manipulador, mesmo quando um MenuItem é pressionado, ele não funciona !. undo funcionalidade só funciona quando eu pressionar Ctrl + Z para que eu verifiquei e notei que o deafult propriedade isUndoable é definido como falso! assim como eu posso mudar isso?
aqui está o meu código:
MenuItem undo = new MenuItem("Undo");
undo.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.CONTROL_DOWN));
undo.setOnAction(e -> textArea.undo());
Eu também tentei o seguinte código:
textArea.isUndoable() = true;
mas descobriu-se que eu não posso fazer isso!
Esta propriedade não pode ser definida, uma vez que depende de uma história interna de edições. Você não pode modificar esta lista diretamente. No seu caso, a história só acontece de não ter mais estados para desfazer
Tudo o que você pode fazer é tentar fazer o olhar história do jeito que você quer a usar replaceText
(ou outros métodos de edição de usá-lo) várias vezes, mas mesmo que agrupa as alterações e não permite o controle total do histórico de edições.
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