首页 > 解决方案 > Javafx 按钮在第一次调用后没有响应(我在任务线程中调用方法)

问题描述

我已经初始化了 parseBtn onAction,但是因为 parseBtn 中的工作将超过一分钟,所以我创建了 Task 来完成新 Thread(task).start() 中的工作,该函数正在后台工作,但是在完成 parseBtn 后没有任何响应更多的。

我认为因为在另一个线程中的工作按钮没有通知工作完成

@FXML private Button parseBtn;

public void initialize(){

        parseBtn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                new Thread(task).start();
            }
        });
}

Task<Void> task = new Task<Void>() {
        @Override
        public Void call() throws Exception {
            //do something

            return null;
        }
};

任务中的过程已完成,但按钮不再响应

标签: javamultithreadinguser-interfacejavafx

解决方案


我发现解决方案是我的错误是该任务不能多次调用。

    class parser extends Thread{

        @Override
        public void run() {
                //work to do
        }
    }

   public void initialize(){
        parseBtn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                parser p = new parser();
                p.start();
            }
        });
    }


推荐阅读