java - 单击按钮后,如何使文本字段可编辑 10 秒?

标签 java javafx java-8 javafx-8

使用 JavaFX,点击一个按钮我想这样做:

spinBtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
    field.setDisable(false);
    //Delay for 10 seconds
    field.setDisable(true);         
    }
});

我很快意识到 hibernate 是行不通的,因为它会完全卡住 GUI。我也试过 hibernate 线程来获得一个计时器,但如果在我想要延迟的地方输入,它仍然会卡住 GUI。 (下面的例子)

spinBtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
    ExampleTimerThread exampleSleepyThread = new ExampleTimerThread();//this extends Thread
    exampleSleepyThread.start(); 
//thread sleeps for 10 secs & sets public static boolean finished = true; after sleep 
    while(finished == true){
        field.setDisable(false);
        }           
    }
});

我该怎么做才能防止此代码卡住 GUI? 我知道在 Swing 中,有一个计时器。 JavaFX 中有类似的东西吗?

最佳答案

使用PauseTransition 来延迟事件:

spinBtn.setOnAction(e -> {
    field.setDisabled(false);
    PauseTransition pt = new PauseTransition(Duration.seconds(10));
    pt.setOnFinished(ev -> {
        field.setDisabled(true);
    });
    pt.play();
});

关于java - 单击按钮后,如何使文本字段可编辑 10 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629244/

相关文章:

java - 如何仅过滤掉 Java 顺序流中与谓词不匹配的第一个元素?

java - 将 jlist 与自定义对象一起使用时出现问题

java - Hibernate映射异常: Foreign key must have same number of columns as the referenced primary key

javafx - 如何在JavaFX中使用PauseTransition方法?

java - 如何在 Linux 上将 JavaFX 多点触控事件与 JFX Pane 组件一起使用

java - 使用 JavaFX 手动触发 CheckComboBox 的下拉菜单

java流从Map获取Map

java - for 循环 - 检查数组中的数字是否向上或向下移动更多

java - 如何使用静态方法设计类

java - 为什么静态初始化器中带有 lambda 的并行流会导致死锁?