JxBrowserをオフにするには、JxBrowserを正しく終了する方法があります。

2643 ワード

一、問題の説明
 
JAVA FXでJxBrowserを使って起動してからホームページを開きますが、どうすればいいですか?この時、直接窓を閉めました。Javaプロセスはすぐに止まってはいけません。待っています。JxBrowserはまだ閉じていないからです。
 
二、解決方法
 
以下のコードを実行するとJxBrowserを閉じることができます。
new Thread(new Runnable() {
	@Override
	public void run() {
		browser.dispose();
	}
}).start();
公式の文章を参照することができます。https://jxbrowser.support.teamdev.com/support/solutions/articles/9000013069-lightweight-or-heavyweightそして適切に閉じます。
public class Util {

    public enum OS {
        WINDOWS, LINUX, MAC, SOLARIS
    }// Operating systems.

    private static OS os = null;
    private static final String OPERATING_SYSTEM = System.getProperty("os.name").toLowerCase();

    public static OS getOS() {
        if (os == null) {
            if (OPERATING_SYSTEM.contains("win"))
                os = OS.WINDOWS;
            else if (OPERATING_SYSTEM.contains("nix") || OPERATING_SYSTEM.contains("nux") || OPERATING_SYSTEM.contains("aix")) {
                os = OS.LINUX;
            } else if (OPERATING_SYSTEM.contains("mac"))
                os = OS.MAC;
            else if (OPERATING_SYSTEM.contains("sunos"))
                os = OS.SOLARIS;
        }
        return os;
    }

    public static boolean isWindows() {
        return OPERATING_SYSTEM.contains("win");
    }

    public static boolean isLinux() {
        return ( OPERATING_SYSTEM.contains("nix") || OPERATING_SYSTEM.contains("nux") || OPERATING_SYSTEM.contains("aix") );
    }

    public static boolean isMac() {
        return OPERATING_SYSTEM.contains("mac");
    }

    public static boolean isSolaris() {
        return OPERATING_SYSTEM.contains("sunos");
    }

    /**
     * Exit Application
     * 
     * @param code
     */
    public static void exitApplication(int code) {

        System.out.println("Dis All->" + Util.getOS());
        switch (Util.getOS()) {
            case WINDOWS:
                new Thread(() -> {

                    //->dispose all the browsers
                    code....

                    System.exit(code);
                }).start();
                break;
            case LINUX:
            case MAC:
                Platform.runLater(() -> {
                     //->dispose all the browsers
                     code.....

                    System.exit(code);
                });
                break;
            default:
                System.out.println("Can't dispose browser instance!!!");
                break;
        }

    }
}