Ich versuche, einen einfachen Text-Editor mit JavaFx zu machen und wenn ich textArea.undo () als auch Handler aufrufen, wenn ein MenuItem gedrückt wird, es funktioniert nicht !. Rückgängig-Funktion funktioniert nur, wenn ich Strg + Z drücken, damit ich es ausgecheckt und bemerkte, dass die deafult isUndoable Eigenschaft auf false gesetzt ist! so wie kann ich das ändern?
hier ist mein Code:
MenuItem undo = new MenuItem("Undo");
undo.setAccelerator(new KeyCodeCombination(KeyCode.Z, KeyCombination.CONTROL_DOWN));
undo.setOnAction(e -> textArea.undo());
Ich habe auch versucht, den folgenden Code:
textArea.isUndoable() = true;
aber es stellte sich heraus, dass ich das nicht tun kann!
Diese Eigenschaft kann nicht festgelegt werden, da sie auf einer internen Geschichte der Änderungen abhängig ist . Sie können diese Liste nicht direkt ändern. In Ihrem Fall ist nun mal die Geschichte nur für Verhängnis nicht mehr Staaten haben
Alles , was Sie tun können , ist zu versuchen , die Geschichte so aussehen, wie Sie es verwenden wollen, stellen Sie replaceText
(oder andere Bearbeitungsmethoden mit ihm) wiederholt, sondern auch , dass Veränderungen Gruppen und erlaubt keine vollständige Kontrolle über die Versionsgeschichte.
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