PopupFeatures 处理新窗口 
   WebHistory 
网页一般都带有历史记录的功能,可以回退,也可以前进,fx用WebHistory处理。

Java代码  
  1. final WebHistory wh = webEngine.getHistory();   //获取webhistory
  2. go(int offset)   //跳到相对应的页,一般-1是后退,1是前进
  3. getCurrentIndex()  //获取当前页索引,开始页索引为0,点击进入下一页此时为1。

WebView WebEngin 
WebView作为一个node用于显示网页内容

Java代码  
  1. WebView webView = new WebView();

WebEngine用于对网页的操作,通过webView获取web引擎

Java代码  
  1. WebEngine webEngine = webView.getEngine();

WebEngine的一些方法

Java代码  
  1. webEngine.load(java.lang.String url);  //加载一个网页
  2. webEngine.executeScript(java.lang.String script)  //执行网页中的脚本语言

看个demo

Java代码  
  1. public void init(Group root){
  2. VBox box = new VBox();
  3. WebView webView = new WebView();
  4. final WebEngine webEngine = webView.getEngine();
  5. webEngine.load("http://forums.oracle.com/forums/");
  6. box.getChildren().add(webView);
  7. Button button = new Button("showAll");
  8. button.setOnAction(new EventHandler<ActionEvent>() {
  9. @Override
  10. public void handle(ActionEvent arg0) {
  11. webEngine.executeScript("showAll()");
  12. }
  13. });
  14. box.getChildren().add(button);
  15. root.getChildren().add(box);
  16. }

这里要注意的是,脚本必须是你网页中存在的。

可以在Application中执行网页中的脚本,那么也可以在网页脚本中执行Application方法

Java代码  
  1. JSObject win = (JSObject) webEngine.executeScript("window");  获取js对象
  2. win.setMember("app", new JavaApp()); 然后把应用程序对象设置成为js对象
  3. private class JavaApp {
  4. public void exit() {
  5. Platform.exit();
  6. }
  7. public void login(){
  8. System.out.println("login...");
  9. }
  10. }

此时在页面可以调用

Java代码  
  1. <a href="about:blank" οnclick="app.exit()">Exit the Application</a>

在网页上右键点击的时候,可以选择在新窗口打开,此时你必须自己设定。

Java代码  
  1. setCreatePopupHandler(Callback<PopupFeatures,WebEngine> handler)  //处理弹出窗口。
  2. webEngine.setCreatePopupHandler(
  3. new Callback<PopupFeatures, WebEngine>() {
  4. @Override public WebEngine call(PopupFeatures config) {
  5. return newWebView.getEngine();
  6. }
  7. }
  8. );

网页是通过WebView显示的,所以当你需要一个新窗口时,你必须弄一个新的webView,并为该webview设置好显示的位置,然后在上面的代码中获取该webview的webengine返回。

发现加载web页面需要一段时期,此时application的一些节点显示出来了,若是想让节点显示和web一起显示,则可以监听webEngine的状态属性。

Java代码  
  1. webEngine.getLoadWorker().stateProperty().addListener(
  2. new ChangeListener<State>() {
  3. @Override
  4. public void changed(ObservableValue<? extends State> ov,
  5. State oldState, State newState) {
  6. if (newState == State.SUCCEEDED) {
  7. //添加节点,或者把app注入到网页脚本当中
  8. }
  9. }
  10. }
  11. );

看个demo:

Java代码  
  1. public void init(Group root){
  2. final TabPane tp = new TabPane();
  3. WebView webView = new WebView();
  4. System.out.println(root.getScene());
  5. webView.prefWidthProperty().bind(root.getScene().widthProperty());
  6. webView.prefHeightProperty().bind(root.getScene().heightProperty());
  7. final WebEngine webEngine = webView.getEngine();
  8. webEngine.load("http://forums.oracle.com/forums/");
  9. webEngine.setCreatePopupHandler(new Callback<PopupFeatures, WebEngine>() {
  10. @Override
  11. public WebEngine call(PopupFeatures arg0) {
  12. WebView newWebView = new WebView();
  13. WebEngine newWebEngine = newWebView.getEngine();
  14. Tab tab = new Tab("new Window");
  15. tab.textProperty().bind(newWebEngine.titleProperty());
  16. tab.setContent(newWebView);
  17. tp.getTabs().add(tab);
  18. return newWebEngine;
  19. }
  20. });
  21. final Tab tab = new Tab();
  22. tab.textProperty().bind(webEngine.titleProperty());
  23. tab.setContent(webView);
  24. // process page loading
  25. webEngine.getLoadWorker().stateProperty().addListener(
  26. new ChangeListener<State>() {
  27. @Override
  28. public void changed(ObservableValue<? extends State> ov,
  29. State oldState, State newState) {
  30. if (newState == State.SUCCEEDED) {
  31. tp.getTabs().add(tab);
  32. }
  33. }
  34. }
  35. );
  36. root.getChildren().add(tp);
  37. }

原文:http://lujin55.iteye.com/blog/1747187

官方文档:http://docs.oracle.com/javafx/2/api/index.html

转载于:https://www.cnblogs.com/langtianya/p/3806935.html

JavaFX学习之Web相关推荐

  1. linux学习总结-----web前端①

    linux学习总结-----web前端① <html><head><title></title><meta charset='utf-8'/> ...

  2. python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目

    文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...

  3. JavaFX学习之道:JavaFX之TableView

     TableView表     TableColumn列  构建一个表主要有TableView,TableColumn,ObservableList,Bean.  加入列table.getColumn ...

  4. java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库

    本文转自与博客园一杯凉茶的博客. 在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为.行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上 ...

  5. python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...

    随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...

  6. 学习java web感想_学了近一个月的java web 感想

    对于每天学习的新知识进行一定的总结,是有必要的. 之前我学的每一门知识,我都没有怎么总结自己的问题,也没有怎么去想想该怎样才能学的更好,把知识掌握的更牢固.从现在开始呢,我会每半个月,或每一个月总结总 ...

  7. Kali Linux学习笔记—Web渗透(1)

    Kali Linux学习笔记-WEB渗透 侦察 Httrack 扫描 Nikto vega skipfish w3af Arachni OWASP_ZAP 必须掌握 Burpsuite 必须掌握 实验 ...

  8. 后台是怎么判断管理员用户还是普通用户_深入学习 Java Web(九) :用户管理系统...

    本文转自与博客园一杯凉茶的博客. 前面学习了一大堆,什么JSP,Servlet.jstl.el等等等,大多是一些死的东西,只要会其语法,知道怎么用就行了,所以做了一个小小的只有增删改查的小demo,为 ...

  9. 学习笔记——web网页庐山旅游网

    学习笔记--web网页庐山旅游网 这学期学习了web技术,简单学习了H5+CSS+JS的知识. 这是一个简单的前端,采用html.一共五个页面. 首页index.html <!DOCTYPE h ...

最新文章

  1. 移动Web开发实践——解决position:fixed自适应BUG
  2. 线段树POJ3468(成段更新,区间求和)
  3. 什么是 Web API 中的 background fetch API
  4. 如何找出MySQL数据库中的低效SQL语句
  5. 对xml操作的主要方法[轉]
  6. 文件和目录操作命令(19 个)--14.dirname
  7. 彩扩机项目--死区,另辟蹊径使用即将导通的一路的电压得能量对需要关闭的一路的电容进行放电...
  8. openresty的安装和使用
  9. The Stanford Geostatistical Modeling Software(地质统计软件)
  10. Linux源码安装pgadmin4,如何在CentOS 7中安装pgAdmin4(yum 安装方法)
  11. PS软件的一些基本快捷键
  12. 中国股票市场化整为零,然后聚沙成塔
  13. 1、git提交码云拉取创库地址
  14. P2123 皇后游戏
  15. 主攻文推荐攻守都有系统_第五十五章 攻守转换
  16. Testin云测技术沙龙在沪召开,云监控预警成关注重点
  17. 2021/5/12爬虫第十一次课(ajax、selenium、Phantomjs)
  18. mac如何开两个qq?
  19. SpringBoot 优雅的读取yml(yml规范篇)
  20. 28届计算机表演赛辽宁赛区,第十九届计算机表演赛辽宁赛区网络基础类竞赛结果.doc...

热门文章

  1. 倾向得分匹配的stata命令_计量方法的适用条件汇总(二):倾向得分匹配
  2. android 通知历史,Android 4.3人性新功能:查看通知历史
  3. app自定义图标 vue_uniapp自定义图标组件
  4. 随机迷宫c语言实验报告,[原创]递归随机迷宫生成算法详解
  5. jquery导入数据_Web技术——简单的数据库编程
  6. win10无法查看计算机名,win10如何查看计算机名字
  7. 12v60ah锂电池组装图_什么是自放电?如何缩短锂电池自放电测试时间?
  8. 服务器双网卡设置安全_服务器硬件介绍之服务器主板
  9. onpagefinished等了很久才执行_其实,无所事事的日子才过得最累
  10. 东北大学软件项目管理与过程改进_工程项目管理信息化实施方案