您如何侦听使用 JavaFX 在文本字段中完成的鼠标粘贴



将文本复制到剪贴板中,右键单击文本字段并按"粘贴",有没有办法在单击粘贴时收听?或者更确切地说,字段中的输入文本在以这种方式粘贴某些内容后发生了变化。因为这些在这种特殊情况下不起作用:

setOnKeyReleased()
setOnInputMethodTextChanged()

"粘贴"功能在public void paste()TextFieldTextInputControl超类中实现。因此,虽然它不是真正的事件驱动或 MVC 方法,但您可以通过重写此方法对"粘贴"操作(无论是通过鼠标还是键盘快捷键调用,通常为 ctrl-V)做出反应:

TextField tf = new TextField() {
    @Override
    public void paste() {
        super.paste();
        System.out.println("text pasted in");
    }
}

你可以只听文本属性的变化。具有搜索文本字段的示例:

tf_search.textProperty().addListener((observableValue, oldValue, newValue) -> {
                onSearch();
            });

另一种方法是使用剪贴板覆盖适当的方法。

 TextField tf = new TextField() {
            @Override
            public void paste() {
                Clipboard clipboard = Clipboard.getSystemClipboard();
                if (clipboard.hasString()) {
                    replaceSelection(clipboard.getString());
                }
            }
        };

相关内容

  • 没有找到相关文章

最新更新