日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaFX学习之Web

發布時間:2023/12/18 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaFX学习之Web 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???PopupFeatures?處理新窗口?
???WebHistory?
網頁一般都帶有歷史記錄的功能,可以回退,也可以前進,fx用WebHistory處理。?

Java代碼??
  • final?WebHistory?wh?=?webEngine.getHistory();???//獲取webhistory??
  • go(int?offset)???//跳到相對應的頁,一般-1是后退,1是前進??
  • getCurrentIndex()??//獲取當前頁索引,開始頁索引為0,點擊進入下一頁此時為1。??

  • ???WebView?WebEngin?
    WebView作為一個node用于顯示網頁內容?

    Java代碼??
  • WebView?webView?=?new?WebView();??

  • WebEngine用于對網頁的操作,通過webView獲取web引擎?

    Java代碼??
  • WebEngine?webEngine?=?webView.getEngine();??
  • WebEngine的一些方法?

    Java代碼??
  • webEngine.load(java.lang.String?url);??//加載一個網頁??
  • webEngine.executeScript(java.lang.String?script)??//執行網頁中的腳本語言??

  • 看個demo?

    Java代碼??
  • public?void?init(Group?root){??
  • ????VBox?box?=?new?VBox();??
  • ????WebView?webView?=?new?WebView();??
  • ????final?WebEngine?webEngine?=?webView.getEngine();??
  • ????webEngine.load("http://forums.oracle.com/forums/");??
  • ????box.getChildren().add(webView);??
  • ????Button?button?=?new?Button("showAll");??
  • ????button.setOnAction(new?EventHandler<ActionEvent>()?{??
  • ??????????
  • ????????@Override??
  • ????????public?void?handle(ActionEvent?arg0)?{??
  • ????????????webEngine.executeScript("showAll()");??
  • ????????}??
  • ????});??
  • ????box.getChildren().add(button);??
  • ????root.getChildren().add(box);??
  • }??

  • 這里要注意的是,腳本必須是你網頁中存在的。?

    可以在Application中執行網頁中的腳本,那么也可以在網頁腳本中執行Application方法?

    Java代碼??
  • JSObject?win?=?(JSObject)?webEngine.executeScript("window");??獲取js對象??
  • win.setMember("app",?new?JavaApp());?然后把應用程序對象設置成為js對象??
  • private?class?JavaApp?{??
  • ????public?void?exit()?{??
  • ????????Platform.exit();??
  • ????}??
  • ????public?void?login(){??
  • ????????System.out.println("login...");??
  • ????}??
  • }??

  • 此時在頁面可以調用?

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


  • 在網頁上右鍵點擊的時候,可以選擇在新窗口打開,此時你必須自己設定。?

    Java代碼??
  • setCreatePopupHandler(Callback<PopupFeatures,WebEngine>?handler)??//處理彈出窗口。??
  • ?webEngine.setCreatePopupHandler(??
  • ????????????new?Callback<PopupFeatures,?WebEngine>()?{??
  • ????????????????@Override?public?WebEngine?call(PopupFeatures?config)?{??
  • ????????????????????return?newWebView.getEngine();??
  • ????????????????}??
  • ?????????????}??
  • ?);??

  • 網頁是通過WebView顯示的,所以當你需要一個新窗口時,你必須弄一個新的webView,并為該webview設置好顯示的位置,然后在上面的代碼中獲取該webview的webengine返回。?

    發現加載web頁面需要一段時期,此時application的一些節點顯示出來了,若是想讓節點顯示和web一起顯示,則可以監聽webEngine的狀態屬性。?

    Java代碼??
  • webEngine.getLoadWorker().stateProperty().addListener(??
  • ????????????new?ChangeListener<State>()?{??
  • ????????????????@Override??
  • ????????????????public?void?changed(ObservableValue<??extends?State>?ov,??
  • ????????????????????State?oldState,?State?newState)?{??
  • ????????????????????if?(newState?==?State.SUCCEEDED)?{??
  • ?????????????????????????//添加節點,或者把app注入到網頁腳本當中??
  • ????????????????????????}??
  • ????????????????????}??
  • ????????????????}??
  • ????????);??

  • 看個demo:?

    Java代碼??
  • public?void?init(Group?root){??
  • ????final?TabPane?tp?=?new?TabPane();??
  • ????WebView?webView?=?new?WebView();??
  • ????System.out.println(root.getScene());??
  • ????webView.prefWidthProperty().bind(root.getScene().widthProperty());??
  • ????webView.prefHeightProperty().bind(root.getScene().heightProperty());??
  • ????final?WebEngine?webEngine?=?webView.getEngine();??
  • ????webEngine.load("http://forums.oracle.com/forums/");??
  • ????webEngine.setCreatePopupHandler(new?Callback<PopupFeatures,?WebEngine>()?{??
  • ??????????
  • ????????@Override??
  • ????????public?WebEngine?call(PopupFeatures?arg0)?{??
  • ????????????WebView?newWebView?=?new?WebView();??
  • ????????????WebEngine?newWebEngine?=?newWebView.getEngine();??
  • ????????????Tab?tab?=?new?Tab("new?Window");??
  • ????????????tab.textProperty().bind(newWebEngine.titleProperty());??
  • ????????????tab.setContent(newWebView);??
  • ????????????tp.getTabs().add(tab);??
  • ????????????return?newWebEngine;??
  • ????????}??
  • ????});??
  • ????final?Tab?tab?=?new?Tab();??
  • ????tab.textProperty().bind(webEngine.titleProperty());??
  • ????tab.setContent(webView);??
  • ???????//?process?page?loading??
  • ???????webEngine.getLoadWorker().stateProperty().addListener(??
  • ???????????new?ChangeListener<State>()?{??
  • ???????????????@Override??
  • ???????????????public?void?changed(ObservableValue<??extends?State>?ov,??
  • ???????????????????State?oldState,?State?newState)?{??
  • ???????????????????if?(newState?==?State.SUCCEEDED)?{??
  • ????????????????????tp.getTabs().add(tab);??
  • ???????????????????????}??
  • ???????????????????}??
  • ???????????????}??
  • ???????);??
  • ????root.getChildren().add(tp);??
  • }??
  • ? ?原文: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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。