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

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

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

  1. WebView webView = new WebView();

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

  1. WebEngine webEngine = webView.getEngine();

WebEngine的一些方法

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

看个demo

  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方法

  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. }

此时在页面可以调用

  1. <a href="about:blank" onclick="app.exit()">Exit the Application</a>

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

  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的状态属性。

  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:

  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

JavaFX学习之Web的更多相关文章

  1. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  2. 疯狂学习java web

    因工作需要,疯狂学习java web,只是这么多年一直从事C++开发,突然之间要接手同事的那么一大堆代码,真有无从下手的感觉,首先是要学习html,然后是js, 然后是jsp,当然还有各种框架,想想就 ...

  3. 菜鸟学习Spring Web MVC之一

    ---恢复内容开始--- 当当当!!沉寂两日,学习Spring Web MVC去了.吐槽:近日跟同行探讨了下,前端攻城师,左肩担着设计师绘图,右肩担着JAVA代码?!我虽设计过UI,但这只算是PS技巧 ...

  4. JavaFX学习之道:JavaFX之TableView

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

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

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

  6. 学习Java Web开发

    学习DreamWaveMX中文版的网页设计技术 HTML网页设计,这是最基本的.学习XML的一些基本知识.初步掌握一些JSCRIPT的应用. 学习JAVA语言. 这应该分成2次来进行: 第1次找一本国 ...

  7. Servlet的学习之web路径问题

    在这个篇章中,我们来学习下在web开发过程中会碰到的路径写法问题. 在之前的web应用开发,尤其是Servlet的学习过程中,我们碰到多次要写路径的问题,这些路径并不统一,因此这里将大致说明下各个方法 ...

  8. JavaFX学习之路:详细解释JavaFX架构和框架

    JavaFX 2.0平台是基于Java技术的富client平台.它使应用程序开发人员更加easy的开发和部署跨平台的富互联网应用(RIA).JavaFX 2.0文档包括了JavaFX 2.0所提供的功 ...

  9. [WebView五学习]:调试Web Apps

    上一篇我们学习了([WebView学习之四]:迁移到Android4.4版本号的WebView),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jia ...

随机推荐

  1. 有关mysql的innodb_flush_log_at_trx_commit参数【转】

    一.参数解释 0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下在事务提交的时候,不会主动触发写入磁盘的操作. 1:每次事务 ...

  2. 判断Selenium加载完成

    How do you make Selenium 2.0 wait for the page to load? You can also check pageloaded using followin ...

  3. leetcode 168. Excel Sheet Column Title 171 Excel Sheet Column Number

    题目 //像10进制一样进行 转换   只是要从0开始记录 class Solution { public: string convertToTitle(int n) { char a; string ...

  4. 对cgic的理解——name选项

    #include <stdio.h>#include <stdlib.h>#include <string.h>#include "cgic.h" ...

  5. Codeforces 445A Boredom(DP+单调队列优化)

    题目链接:http://codeforces.com/problemset/problem/455/A 题目大意:有n个数,每次可以选择删除一个值为x的数,然后值为x-1,x+1的数也都会被删除,你可 ...

  6. 洛谷 P1897电梯里的爱情 题解

    题目传送门 对于每个输入的第i个人,直接使用桶,但注意范围要开大一些. #include<bits/stdc++.h> using namespace std; ],x,sum,h,Max ...

  7. jvisualvm 远程连接jboss

    由于项目中使用jboss 作为web容器,每当项目上线时需要使用loadrunner对项目进行性能压测,这时就需要实时观察JVM的一些参数.想使用jvisualvm借助jstatd远程连接服务器上面的 ...

  8. ADO.NET怎删改+vs 2013 C#

    一.删除 string constr = "server=.;database=test;uid=sa;pwd=sa";            SqlConnection myco ...

  9. 井字棋游戏升级版 - TopTicTacToe项目 简介

    一.游戏简介 井字棋是一款世界闻名的游戏,不用我说,你一定知道它的游戏规则. 这款游戏简单易学,玩起来很有意思,不过已经证明出这款游戏如果两个玩家都足够聪明的话, 是很容易无法分出胜负的,即我们得到的 ...

  10. springMVC接收参数 xml/json

    springMVC参数接收 作为web层框架,可以接受复杂的类型,且很简单 1.接收字符串可以直接写参数类型,参数名称,跟前端传过来的name值一样即可 如果不一样也可以,通过@RequestPara ...