ControlsFX MaskerPane http将不会显示

时间:2016-07-17 19:52:38

标签: http javafx pane controlsfx

如果执行网络请求,我想从ControlsFx显示MaskerPane。如果请求仍在运行,它应该是一个指示器。此外,我想在后台运行网络请求,因此窗口不会冻结。

private void search(String searchTerm, boolean tvShow){

    masker.setVisible(true);

    ExecutorService executor = Executors.newSingleThreadExecutor();
    Callable<List<String>> callable = new Callable<List<String>>() {

        @Override
        public List<String> call() throws Exception {
            return tmdbWrapper.search(searchTerm, tvShow);
        }

    };
    Future<List<String>> future = executor.submit(callable);
    executor.shutdown();
    try {
        System.out.println(future.get().toString());
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    } finally {
        System.out.println("finally");
        masker.setVisible(false);
    }

问题是,在请求完成之前,MaskerPane不会显示。

tmdbWrapper是tmdb Api的包装器。

如果我会做这样的事情

new Thread(){
    @Override
    public synchronized void run(){
        masker.setVisible(true);
        System.out.println(tmdbWrapper.search(searchTerm, tvShow));
            masker.setVisible(false);
        }
    }.start();

它会起作用。因为编码风格不好而且不会是FX应用程序线程我不希望它这样做。

0 个答案:

没有答案