Кнопка Javafx не отвечает после первого вызова (я вызываю метод в потоке задач) - PullRequest
0 голосов
/ 25 сентября 2019

Я инициализировал parseBtn onAction, но поскольку работа в parseFunction будет длиться более одной минуты, я создал задачу, чтобы выполнить работу в новом потоке (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;
        }
};

процесс внутри задачи выполнен, но кнопка неотвечать больше

1 Ответ

0 голосов
/ 25 сентября 2019

Я нашел решение, моей ошибкой было то, что задача не может вызываться несколько раз.

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

...