如何在JavaFX中将“粘贴”操作限制为特定的TextField?

时间:2017-01-12 15:36:35

标签: javafx javafx-8 textfield

有没有办法阻止用户将数据“粘贴”到TextField? 我为它设置了一个ChangeListener,但我找不到如何区分keyboardInput和paste动作的方法。有一点是:

 myChangeListener = (ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
    if(Math.abs(newValue.length() - oldValue.length()!=1){
        //definitely paste - entered more than one symbol
    }
 };

但是用户也可以一次粘贴一个字符。这是我无法捕捉到的情景。请提前帮助,谢谢。

1 个答案:

答案 0 :(得分:4)

这似乎是一件奇怪的事情,因为这是预期的行为。但是你可以覆盖paste()方法,这样它就是一个无操作:

TextField myTextField = new TextField() {
    @Override
    public void paste() { }
};