如何在继续之前确保UI更新

时间:2017-08-24 01:57:28

标签: java user-interface javafx-2 javafx-8

我是JavaFX的新手,我有一个启动和对象的按钮,并用它做一些方法。问题是UI在对象执行方法之后才会更新。当我单击按钮时,GUI没有响应(在标题栏中显示“(未响应)”。方法完成后,UI更新。我能看到修复此问题的唯一方法是等待UI更新,然后执行方法。还有其他方法吗?我该如何解决这个问题?

Object myObj;
btn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
                /* some ui updates */
                myLabel.setText("something");
            try {
                 /* try initiating object and doing some methods with them */
                 myObj = new Object();
                 myObj.doMethod();

1 个答案:

答案 0 :(得分:1)

您必须为耗时的方法创建新线程: (我也用lambda表达式重写你的代码...... Java8风格;))

Object myObj;
btn.setOnAction((ActionEvent event)->{
    /* some ui updates */
    myLabel.setText("something");
    try {
        /* try initiating object and doing some methods with them */
        Runnable timeConsumingTask = ()-> {
            myObj = new Object();
            myObj.doMethod();
        }
        Thread thread = new Thread(timeConsumingTask);
        thread.start();