JavaFX在等待gui更改时更改游标

时间:2016-04-19 16:19:28

标签: multithreading javafx cursor

我在主线上。从菜单中选择项目时,必须先调用数据库,然后gui才能显示新面板。这需要一些时间。在此期间,我想显示等待光标。 我发现了一种方法,但代码看起来很难看。怎么可以做得更优雅呢? 这个问题与其他问题不同,因为长期运行的任务正在处理gui。

menuitem.setOnAction(event -> {  szene.setCursor(Cursor.WAIT);
                               Task<Void> task = new Task<Void>()
                               {
                                  @Override 
                                  public Void call() throws Exception
                                  {
                                     Platform.runLater(new Runnable()
                                     {
                                        @Override
                                        public void run()
                                        {
                                            // do some stuff
                                            szene.setCursor(Cursor.DEFAULT);
                                        }
                                     });
                                     return null;
                                  };
                              }; 
                              new Thread(task).start();
                            });

1 个答案:

答案 0 :(得分:1)

您可以使用:

 Task<Void> task = new Task<Void>() {

            @Override
            protected Void call() throws Exception {
                //action
                return null;
            }
        };

 task.setOnSucceeded(e -> scene.setCursor(Cursor.DEFAULT));
 task.setOnFailed(e -> scene.setCursor(Cursor.DEFAULT));

 scene.setCursor(Cursor.WAIT);
 new Thread(task).start();