2017-08-30 60 views
-2

我已经无处不在地阅读了。我无法解决这个问题。JavaFX GUI在执行循环时保持冻结

public class Controller { 
    @FXML 
    public Label myTimes; 
    @FXML 
    private TextField username; 
    @FXML 
    private TextField password; 
    @FXML 
    private TextField totalTimes; 
    public void times (ActionEvent event) { 
     String usernameVar = username.getText(); 
     String passwordVar = password.getText(); 
     String times = totalTimes.getText(); 
     main Main = new main(); 
     Main.booster(usernameVar, passwordVar, Integer.parseInt(times)); 
     myTimes.setText("Completed: " + Integer.toString(Main.timess)); 

    } 

该助推器方法是打开硒并在网上执行任务。但是,当它这样做时,GUI会冻结,直到任务完成。我试过使用任务和线程,但没有运气(我真的不知道如何使用它们)。任何人都可以请给我一个解决方案?

+4

解决方案是使用任务和线程。如果这不起作用,那是因为你没有做到正确。你应该发布你的尝试,并以什么方式解释它 不起作用。 –

+0

你使用线程和任务内部你的方法**助推器**或你使用线程从你的控制器调用你的方法? –

+0

我使用了任务,并且在几小时后我终于开始工作了。 –

回答

-1

有两个选项中的Java:

  1. 使用Thread

    文档:Thread

  2. 使用Task(一种Runnable Class

    文档:Task

    小例子:Task with ProgressBar

我用normaly一个Task但是这只是一个品味的问题

PS:在线程或任务的代码在后台运行,你的其他代码继续正常

+1

但是,如果您使用任务,您仍然需要一个线程,当然。 –

+0

这就是对的:)我更新了我的答案...在你的情况下,我建议你尝试一下这个例子链接...如果你有问题,你可以再次对我进行调整 – Developer66

+0

但是'任务'不会延伸'线程'。 –