Как установить для свойства isUndoable TextArea в javafx значение true? - PullRequest
2 голосов
/ 02 февраля 2020

Я пытаюсь создать простой текстовый редактор с JavaFx, и когда я вызываю textArea.undo () в качестве четного обработчика при нажатии MenuItem, он не работает !. Функция отмены работает только когда я нажимаю Ctrl + Z, поэтому я проверил это и заметил, что для свойства deafult isUndoable установлено значение false! так как я могу это изменить?

вот мой код:

MenuItem undo = new MenuItem("Undo");
undo.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.CONTROL_DOWN));
undo.setOnAction(e -> textArea.undo());

Я также попробовал следующий код:

textArea.isUndoable() = true;

но оказалось, что я не могу сделай это!

1 Ответ

2 голосов
/ 02 февраля 2020

Это свойство не может быть установлено , так как оно зависит от внутренней истории изменений. Вы не можете изменить этот список напрямую. В вашем случае в истории просто больше нет состояний для удаления

Все, что вы можете сделать, это попытаться заставить историю выглядеть так, как вы хотите, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...