有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ChangeListener功能,用于使用时间延迟/或其他解决方案检查键入的值

我正在寻找我的代码中的功能,以允许我在几秒钟内键入full simpleTextField中的名称,我需要它,因为如果我键入例如:

  1. 我输入R-然后方法被改变了,正在执行它的任务
  2. 我键入RR-然后方法更改会执行相同的操作两次(我不希望这样)

那个么,让程序等待几秒钟的最佳方式是什么呢?这样我就有时间完全输入所需的值,然后该方法只执行一次

    simpleTextField.textProperty().addListener(new ChangeListener<String>() {

        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {

       // some funtionality to do

     }

共 (1) 个答案

  1. # 1 楼答案

    每次修改TextFieldtext属性时,使用从开始播放的PauseTransition

    在对TextField.text进行最后一次修改后,以下代码将TextField的内容添加到ListView1秒:

    @Override
    public void start(Stage primaryStage) throws Exception {
        TextField text = new TextField();
    
        ListView<String> list = new ListView<>();
    
        PauseTransition delay = new PauseTransition(Duration.seconds(1));
        delay.setOnFinished(evt -> {
            list.getItems().add(text.getText());
        });
    
        // restart delay every time the text is modified
        text.textProperty().addListener((o, oldValue, newValue) -> delay.playFromStart());
    
        VBox root = new VBox(text, list);
    
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    

    您可能希望向anchor属性添加另一个侦听器,以处理选择的更改