gpt4 book ai didi

java - 跨平台监听和注入(inject)粘贴操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:10:36 26 4
gpt4 key购买 nike

主要问题

我想拦截粘贴到我的 JavaFX 应用程序(特别是在 HTMLEditor 中)的操作,以便我可以清理用户可以输入的内容。现在我可以使用以下命令在 Windows 中拦截命令:

//In the initalize method of an HTMLEditor
super.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
if(e.isControlDown() && e.getCode() == KeyCode.V) {
modifyClipboardForNextPaste();
}
});

但是 OSX 的粘贴命令是“command + v”,所以它不会选择这些命令。是否可以添加某种类型的过滤器来拾取粘贴事件本身,而不是可能绑定(bind)或不绑定(bind)到操作系统上的粘贴事件的键?

相关问题:

当用户在我使用以下代码制作的上下文菜单上选择粘贴选项时,我还尝试注入(inject)粘贴命令:

Robot robot = new Robot();
robot.keyPress(java.awt.event.KeyEvent.VK_CONTROL);
robot.keyPress(java.awt.event.KeyEvent.VK_V);
robot.keyRelease(java.awt.event.KeyEvent.VK_V);
robot.keyRelease(java.awt.event.KeyEvent.VK_CONTROL);

这与上面的问题相同,其中 OSX 用户或修改了粘贴命令的用户没有得到这个。

最佳答案

上面的评论已经回答了这个问题。为了方便起见,我在这里添加实际代码:

import javafx.scene.input.Clipboard;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;

public void enablePaste() {
super.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
if(e.isShortcutDown() && e.getCode() == KeyCode.V) {
Clipboard clipboard = Clipboard.getSystemClipboard();
// your action here e.g.
// if (clipboard.hasUrl()) {
//
//}
}
});
}

关于java - 跨平台监听和注入(inject)粘贴操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884171/

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