我在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()
主框架崩溃(锁定)。
抱歉我的英语不好,试着尽我所能写出来
答案 0 :(得分:0)
使用它:
[...]
stage.setOnCloseRequest(this.getCloseSystemEvent());
}
public EventHandler<WindowEvent> getCloseSystemEvent() {
return new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
Platform.exit();
}
};
}
此外,您应该检查并发API。您的代码可以防止运行时正确关闭线程。