如何使JavaFX Web浏览器显示警报并确认消息 [英] How can I make JavaFX web browser displays alert and confirm message
本文介绍了如何使JavaFX Web浏览器显示警报并确认消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的java网页浏览器不显示提醒(消息);并确认(消息);要么,我通常使用c#web Browser组件,它的工作原理很完美,但我是新手。
My java web browser don't display alert("message"); and confirm("message"); either, I ussually use c# web Browser component and it's works perfectly but I'm new at this.
public void openPage(String url){
JFXPanel jfxPanel = new JFXPanel();
JFrame frame = new JFrame("");
frame.add(jfxPanel);
Platform.runLater(() -> {
WebView webView = new WebView();
jfxPanel.setScene(new Scene(webView));
webView.getEngine().load(url);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
}
推荐答案
alert
,注册 onAlert
处理程序。对于确认
,请注册 confirmHandler
。请参阅 <的用户界面回调部分code> WebEngine 文档。
For alert
, register an onAlert
handler with the web engine. For confirm
, register a confirmHandler
with the web engine. See the "User interface callbacks" section of the WebEngine
documentation.
这是一个简单的例子:
import java.util.Optional;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewWithAlertAndConfirm extends Application {
private WebEngine engine;
@Override
public void start(Stage primaryStage) {
WebView webView = new WebView();
engine = webView.getEngine();
engine.setOnAlert(event -> showAlert(event.getData()));
engine.setConfirmHandler(message -> showConfirm(message));
String content =
"<html>"
+ "<head>"
+ "<script language='javascript'>"
+ "function doConfirm() {"
+ " var accepted = confirm('Are you sure?');"
+ " if (accepted) {"
+ " document.getElementById('result').innerHTML = 'Accepted';"
+ " } else {"
+ " document.getElementById('result').innerHTML = 'Declined';"
+ " }"
+ "}"
+ "</script>"
+ "<body>"
+ "<div><button onclick='alert(\"This is an alert!\")'>Show alert</button>"
+ "<button onclick='doConfirm()'>Confirm</button>"
+ "</div>"
+ "<div id='result'/>"
+ "</body>"
+ "</html>";
engine.loadContent(content);
primaryStage.setScene(new Scene(new BorderPane(webView)));
primaryStage.show();
}
private void showAlert(String message) {
Dialog<Void> alert = new Dialog<>();
alert.getDialogPane().setContentText(message);
alert.getDialogPane().getButtonTypes().add(ButtonType.OK);
alert.showAndWait();
}
private boolean showConfirm(String message) {
Dialog<ButtonType> confirm = new Dialog<>();
confirm.getDialogPane().setContentText(message);
confirm.getDialogPane().getButtonTypes().addAll(ButtonType.YES, ButtonType.NO);
boolean result = confirm.showAndWait().filter(ButtonType.YES::equals).isPresent();
// for debugging:
System.out.println(result);
return result ;
}
public static void main(String[] args) {
launch(args);
}
}
这篇关于如何使JavaFX Web浏览器显示警报并确认消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文