在java应用程序中关闭Javafx类应用程序

时间:2014-07-20 21:24:59

标签: java webview javafx

我在java中有一个应用程序,它有一个带有javafx应用程序的弹出窗口(嵌入来自Youtube的视频)。我正确地看到了这一点但是当我关闭这个弹出窗口时,javafx线程没有关闭,javafx应用程序在后台运行。这是我的javafx类:

public class JavaFXClass extends Application {
@Override
public void start(final Stage stage) throws Exception {
    final WebView webview = new WebView();
    /*...*/
    stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
        @Override
        public void handle(WindowEvent event) {
            Platform.runLater( new Runnable() {
                @Override
                public void run() {
                    //I need stop javafx when this class close.
                }
            });
        }  
    });
    stage.show();
}

public static void LoadClass(String Data) { //I use this function to load class
    /*...*/
    launch(); //return error when i re-call this function (already launch).
}

如果我将webview.getEngine().load(null); Platform.exit();代码放入&#34; OnCloseRequest&#34;工作正常但创建了一个例外(&#34;当工具包未运行&#34时尝试调用延迟;)

我需要使用webview.getEngine().load(null);或类似的,因为如果我不使用它,webview中的视频仍然在后台播放。如果我不使用Platform.exit()主框架崩溃(锁定)。

抱歉我的英语不好,试着尽我所能写出来

1 个答案:

答案 0 :(得分:0)

使用它:

[...]
stage.setOnCloseRequest(this.getCloseSystemEvent());
}

public EventHandler<WindowEvent> getCloseSystemEvent() {
    return new EventHandler<WindowEvent>() {
        @Override
        public void handle(WindowEvent event) {
            Platform.exit();
        }
    };
}

此外,您应该检查并发API。您的代码可以防止运行时正确关闭线程。