[英]JavaFX error when ending Swing application
我有一個Swing應用程序,需要在其中顯示內部生成的HTML / CSS。 為了做到這一點,我改編了這個StackOverflow問題中的代碼 。
該控件工作正常。 但是,當應用程序結束時,我收到錯誤消息
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f9622171ae8, pid=5782, tid=140283095549696
就其價值而言,直接來自Oracle的示例代碼(在StackOverflow帖子中引用)具有相同的問題。
我已嘗試在窗口關閉時顯式調用Platform.exit()
,但錯誤仍然存在。 那么,當JavaFX嵌入到Swing應用程序中時,如何正確關閉它呢?
好的,至少在此應用程序中,我找到了解決方案:
這是一個多窗口應用程序; JavaFX組件不在主應用程序窗口中,而是在子窗口中。
JavaFX“平台”的設置為“ ImplicitExit”,默認情況下為“ true”。
顯然,在關閉子窗口時和在關閉主應用程序時都將調用JavaFX Platform.exit()。 第二個調用(當應用程序關閉時)生成原始問題中描述的錯誤消息。
在任何情況下,“隱式退出”行為都是不可取的,因為它阻止了在應用程序的生命周期中再次打開子窗口。
因此,解決方案是關閉“隱式出口”。 這是子窗口中的JavaFX初始化代碼:
Platform.runLater(new Runnable() {
@Override public void run() {
view = new WebView();
engine = view.getEngine();
jfxPanel.setScene(new Scene(view));
Platform.setImplicitExit(false); // Otherwise cannot open report window a second time
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.