JavaFX-在javascript代码完成后显示警报或对话框(GMapsFX,WebView)
JavaFX - displaying alert or dialog after javascript code completes (GMapsFX, WebView)
在我的JavaFX应用程序中,我使用GMapsFX进行路线查找和可视化。对于可视化,我只需在Javascript中使用超时,并在地图上延迟显示标记。我遇到的问题是在可视化结束后显示一个对话框(或js警报),告诉有关搜索的信息(访问的节点数量,我的java和js代码中都有)。有简单的方法吗?
GMapsFX包:http://rterp.github.io/GMapsFX/
public void startVisualization() {
LatLongBounds bounds = new LatLongBounds();
List<LatLong> latLongs = new ArrayList<LatLong>();
JavascriptArray jsArray = new JavascriptArray();
manager.hideIntermediateMarkers();
manager.hideDestinationMarker();
// create Markers
for(geography.GeographicPoint point : points) {
LatLong ll = new LatLong(point.getX(), point.getY());
MarkerOptions options = MarkerManager.createDefaultOptions(ll);
Marker newMarker = new Marker(options);
jsArray.push(newMarker);
markerList.add(newMarker);
bounds.extend(ll);
}
// fit map bounds to visualization
manager.getMap().fitBounds(bounds);
// get javascript runtime and execute animation
runtime = JavascriptRuntime.getInstance();
String command = runtime.getFunction("visualizeSearch", manager.getMap(), jsArray);
System.out.println(command);
runtime.execute(command);
// MapApp.showInfoAlert("Nodes visited :" , latLongs.size() +" nodes were visited in the search");
manager.disableVisButton(true);
// manager.disableRouteButtons(false);
}
var delay = 300;
var map, markers;
var markerURL = "http://maps.google.com/mapfiles/kml/paddle/red-diamond-lv.png";
var destURL = "http://maps.google.com/mapfiles/kml/pal2/icon5.png";
function visualizeSearch(mapParam, markersParam) {
markers = markersParam;
map = mapParam;
drop();
}
function displayMarker(marker, timeout, URL) {
window.setTimeout(function() {
marker.setIcon(URL);
marker.setMap(map);
}, timeout);
}
function drop() {
var i;
for(i = 1; i < markers.length - 1; ++i) {
displayMarker(markers[i], i*delay, markerURL);
}
displayMarker(markers[markers.length - 1], i*delay, destURL)
}
WebView没有内置警报。WebView中javascript导致的任何警报都需要通过onAlert事件处理程序使用JavaFX中的Alerts/Dialogs或自定义视图来发生。您可以获取WebEngine并注册一个事件处理程序来响应javascript中的警报事件,使用:
gmapview.getWebView().getEngine().setOnAlert(EventHandler<WebEvent<String>> e);
您的事件处理程序将获取发出的任何javascript警报的String值。从那里开始,由您决定如何显示它。
相关文章:
- 着色引导框对话框
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- CKeditor:更改对话框中的默认选择选项
- 搜索api在mac上显示对话框
- 使用密码对话框Javascript请求帮助
- CKEditor v4:自制插件中对话框的动态标题
- 删除确认对话框在第一次单击时不起作用
- 使用jquery对话框中的箭头键
- 获取打开jquery对话框的button的id
- 是否可以用JavaScript显示等效的文件夹对话框
- 我怎么能让jQuery对话框表现得像Javascript警报
- 如何在页面重新加载时显示jquery ui对话框
- 打开相对于鼠标位置的CSS3/HTML5模式对话框
- javascript确认对话框有时会不断出现
- 如何为javascript方法放入jquery确认对话框
- Jquery UI对话框不会消失
- 如何从自定义对话框编辑数据网格中的选定行
- OnsenUI、Angular和在警报对话框后刷新UI组件
- jQuery UI对话框错误,按钮导致HierarchyRequestError
- JavaFX-在javascript代码完成后显示警报或对话框(GMapsFX,WebView)