gpt4 book ai didi

JavaFX TextArea 删除快捷方式 Ctrl+Z 的默认撤消操作

转载 作者:行者123 更新时间:2023-12-01 14:09:21 25 4
gpt4 key购买 nike

我正在尝试制作一个可编辑的 Java FX TextArea,它无法使用快捷键 Ctrl+Z 撤消最后一步。默认情况下,当您创建可编辑的 JavaFX TextArea 时,JavaFX 为快捷键 Ctrl+Z/Ctrl+Y 提供默认的撤消/重做功能,同时该 TextArea 处于焦点状态(以及复制、粘贴等)。 ).我想为快捷方式 Ctrl+Z 和 Ctrl+Y 禁用这些默认操作,以便能够创建我自己的撤消/重做逻辑而不是 JavaFX 提供的默认逻辑。另外:我不想完全禁用 JFX 的撤消重做逻辑,因为我之后会使用它,(textarea.undo()textarea.redo()必须仍然是可能的)我只是想删除默认创建的按键事件,我该怎么做?

代码:我使用 FXML 在 BorderPane 中创建了一个 TextArea,并将一个 Controller 附加到 FXML,因此可以通过代码访问 TextArea,不使用 css 文件。

最佳答案

向文本区域添加事件过滤器,并在匹配快捷方式时消费该事件:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.stage.Stage;

public class TextAreaNoUndo extends Application {

@Override
public void start(Stage primaryStage) {
TextArea area = new TextArea();
area.addEventFilter(KeyEvent.ANY, e -> {
if (e.getCode() == KeyCode.Z && e.isShortcutDown()) {
e.consume();
}
});

primaryStage.setScene(new Scene(area));
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}

关于JavaFX TextArea 删除快捷方式 Ctrl+Z 的默认撤消操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com