你如何使用JavaFX监听在TextField中完成的鼠标粘贴?

时间:2017-01-20 11:05:08

标签: java javafx event-handling

将文本复制到剪贴板,右键单击文本字段并按“粘贴”,是否有一种方法可以在粘贴时点击?或者更确切地说,在以这种方式粘贴某些内容后,该字段中的输入文本已更改因为这些在这种特殊情况下不起作用:

setOnKeyReleased()
setOnInputMethodTextChanged()

2 个答案:

答案 0 :(得分:3)

“粘贴”功能在public void paste() TextInputControl的{​​{1}}超类中实现。因此,虽然它不是真正的事件驱动或MVC方法,但您可以通过覆盖此方法来响应“粘贴”操作(无论是通过鼠标或键盘快捷键调用,通常是ctrl-V):

TextField

答案 1 :(得分:0)

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

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());
                }
            }
        };