ブラウザーにロードされた Web ページが Window.alert または window.confirm を呼び出すときに、JavaFX/JXBrowser を使用してアラート/ダイアログを表示しています。しかし、確認ダイアログの結果(true/false)をJSに返す方法がわかりません。alert.showAndWait() はブロッキング関数であるため、JS はこの結果を待つ必要があります。ただし、showAndWait は Platform.runLater ランナブルでも呼び出されるため、結果を返すことができません。true/false コードを実行する JS 関数を作成し、showAndWait の結果に基づいてそれらを呼び出す以外に、他のオプションはありますか?
browser.setDialogHandler(new DialogHandler() {
@Override
public CloseStatus onConfirmation(DialogParams params) {
Platform.runLater(new Runnable() {
@Override
public void run() {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Yes/No");
alert.setHeaderText(null);
alert.setContentText("Yes/No");
Optional<ButtonType> result = alert.showAndWait();
if(result.isPresent())
{
if(result.get()==ButtonType.YES)
{
//Send true to calling JS function
}else
{
//Send false to calling JS function
}
}else
{
System.out.println("No result!");
}
}
});
return null; //because I need to return something and I can't figure out how to get values from the runnable
}
...
}