javafxwebview寫js,javafx開發

本文目錄一覽:

JavaFX文檔什麼是JavaFX

什麼是 JavaFX ?

JavaFX 包含了一些列圖形和媒體包,允許程序員設計、創建、測試、調試、和部署富客戶端應用並且保持跨平台的操作一致性。

JavaFX 應用程序

JavaFX 應用程序由 Java API 編寫,可以調用任何 Java API 包。例如,可以調用 Java API 訪問本地操作系統,並且與伺服器進行連接。

JavaFX 的外觀可以自定義。層疊樣式表(CSS)將應用的外觀與功能分離,讓程序員可以更專註於編碼。美工可以簡單地通過 CSS 來自定義應用程序的外觀。

如果你有 Web 設計的背景,或者你想將 UI 和後台邏輯分離,那麼你還可以將 UI 放入到 FXML 標記語言中,用 Java

編寫業務邏輯。如果你只想編碼,那麼可以將編寫 UI 的工作交給 JavaFX Scene Builder。在支持 JavaFX

的集成開發環境(IDE)中,可以使用 JavaFX Scene Builder 來編寫 FXML 標記語言。

可用性

從 JavaFX 2.2 以後,JavaFX 已經集成在 JRE 7 和 JDK 7 以及以後的 Java 版本中了。因為 JDK

可以很好地運行在主流桌面系統上(Windows, Mac OS X, and Linux),因此 JavaFX

也可以運行在這些主流的桌面系統上。跨平台兼容性,可以讓 JavaFX 的開發者和用戶得到一致的體驗。

在 JDK 的下載頁面,可以獲取 JavaFX 例子的 Zip 包。這些例子應用程序提供了很多代碼來演示如何使用 JavaFX。

主要特性

JavaFX 2.2 和之後的版本都包含以下主要特性:

Java API

JavaFX 是一個 Java 包,由 Java 類和 Java 介面等原始的 Java 代碼編寫而成。這些 API 在設計上可以很友好的替代為 Java VM 語言,例如 JRuby 或 Scala。

FXML and Scene Builder

FXML 是基於 XML 的標記語言,用來創建 JavaFX UI。設計者可以直接編寫 FXML 或者使用 IDE 的 Scence Builder 來編寫 FXML。

WebView

Web 組件可以使用 WebKitHTML 技術將 Web 頁面嵌入到 JavaFX 應用程序中。在 WebView 中運行的

JavaScript 可以調用 Java API,並且 Java API 也可以調用 WebView 中運行的 JavaScript。

Swing 集成

舊有的 Swing 應用程序可以更行 JavaFX 的新特性,比如豐富的圖形媒體播放功能和嵌入 Web 頁面的功能。

豐富的自有控制項和CSS

JavaFX 提供了桌面應用程序需要用到的主要控制項。並且控制項的外觀可以使用標準的 Web CSS 來進行控制。

畫布(Canvas)API

Canvas API 允許在可以包含一個作圖元素的 JavaFX scene 直接繪製圖形。

支持多點觸控

基於平台的底層能力,JavaFX 支持多點觸控功能。

硬體加速的圖形通道

JavaFX 圖形渲染基於 Prism。如果使用了支持 Prism 的顯卡或 GPU,JavaFX 可以很快的進行平滑渲染。如果系統不支持 Prism,那麼默認值將會變為 Java 2D。

高性能的媒體引擎

媒體通道支持 Web 多媒體內容的播放,基於 GStreamer 媒體框架,提供了穩定的、低延遲的媒體播放框架。

自包含的應用程序部署模式

自包含的應用程序,可以包含所有的應用程序資源、Java 運行時以及 JavaFX 運行時。應用程序發布後,可以在操作系統本地安裝,獲得操作系統一致的安裝和載入體驗。

java瀏覽器的開發html顯示異常,一定要內嵌瀏覽器嗎

java瀏覽器開發,其實很簡單, 使用JavaFX的WebView組件即可.(支持html5); 也可以在swing里使用JFXPanel然後添加WebView;

效果圖如下

參考代碼如下(java8+win10 x64 編寫,測試)

import javafx.application.Application;

import javafx.concurrent.Worker.State;

import javafx.geometry.Insets;

import javafx.scene.Scene;

import javafx.scene.control.*;

import javafx.scene.layout.*;

import javafx.scene.web.*;

import javafx.stage.Stage;

public class WebViewTest extends Application {

public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage) throws Exception {

//頂部

HBox hbox=new HBox(8);

Label labeAddr=new Label(“地址”);

TextField tfAddr = new TextField();

tfAddr.setMinWidth(500);

tfAddr.setText(“”);

Button btnGo = new Button(“Go轉到”);

Button btnGoBack=new Button(“-“);

Button btnH=new Button(“-“);

TextField tfSerch = new TextField();

Button btnSerch= new Button(“捜”);

hbox.getChildren().addAll(labeAddr,tfAddr,btnGoBack,btnH,btnGo,tfSerch,btnSerch);

hbox.setPadding(new Insets(5));

//中間

WebView wv = new WebView();

WebEngine we = wv.getEngine();

we.getLoadWorker().stateProperty().addListener((ob, ov, nv) – {

if(nv==State.SCHEDULED) {

tfAddr.setText(we.getLocation());//

}

});

//底部

Label labelBottom = new Label();

labelBottom.textProperty().bind(we.getLoadWorker().messageProperty());//底下的信息顯示

BorderPane root = new BorderPane();

root.setTop(hbox);

root.setCenter(wv);

root.setBottom(labelBottom);

Scene scene = new Scene(root, 900, 600);

primaryStage.setTitle(“JavaFX 雪飛瀟瀟 web瀏覽器”);

primaryStage.setScene(scene);

primaryStage.show();

btnGo.setOnAction(e – {

we.load(tfAddr.getText().trim());

});

btnGoBack.setOnAction(e-{

we.executeScript(“history.back()”);//執行JavaScript,後退

});

btnH.setOnAction(e-{

we.executeScript(“history.forward()”);//執行JavaScript,前進

});

//搜索

btnSerch.setOnAction(e-{

we.load(“”+tfSerch.getText());

});

}

}

如何在JavaFX的WebView中通過JavaScript回調Java的程序

在JavaFX的WebView中通過JavaScript回調Java的程序,可以通過JSObject.setMember的方法來實現。該方法可以通過JavaScript向上層訪問Java代碼,具體請看一下示例。Java代碼先建立一個新的名為「app」的JavaScript對象。該對象哦呢共有一個公共成員,及exit方法。

public class JavaApplication {  

    public void exit() {  

        Platform.exit();  

    }  

}

JSObject window = (JSObject) webEngine.executeScript(“window”);  

window.setMember(“app”, new JavaApplication());

這樣之後,你就可以在HTML頁面內通過app對象來訪問類中的方法:

a href=”” onclick=”app.exit()”Click here to exit application/a

這就相當與一個JavaScript和Java之間的橋樑。

javafx webview js交互問題

1、如果html文件在jar包內,就是在classpath就這樣載入

webView.getEngine().load(WebViewStyle.class.getResource(“/com/html/ScriptToJava.html”).toExternalForm());

2、如果html文件在項目之外

File file = new File(“Resources/Html/Chat/show/show.html”);

String absolutePath = file.getAbsolutePath();

absolutePath = absolutePath.replace(“\\”, “/”);

if (absolutePath.startsWith(“/”)) {

webView.getEngine().load(“file:” + absolutePath);

}else {

webView.getEngine().load(“file:/” + absolutePath);

}

3、js調用Java對象

(1)、Java class需要是public

(2)提交實例化java對象和頁面載入完再設置

(3)調用

java做一些小遊戲需要學什麼

Java做這些小遊戲, 可以使用下面幾種Java自帶的圖形界面框架

Awt 適合內存較小, 配置較低的嵌入式系統等,組件較少, 性能好,資源消耗低.

Swing 適合PC等, 組件較豐富, 內存佔用較大, 但是跨平台性優越

JavaFX 這個是比較強大的框架了,組件比Swing更豐富,比如添加了 日期選擇組件, WebView組件, 還支持3D和 動畫. 並且多多媒體支持良好. 但是相關資料比Swing等少

既然學過Java Web 那麼對網頁編程還是有了解吧,  HTML+CSS+JS 也可以開發出小遊戲,瀏覽器可以顯示,  放入JavaFX的WebView組件也可以顯示出來

推薦使用JavaFX 或者 Web ,因為這兩者都很好做到了分離. JavaFX也可以分離出FXML文件,CSS文件,Java文件. 當然也可以採用最穩妥的Swing來開發,畢竟Swing的圖書教程很多.

推薦書籍

Java 2D遊戲編程入門  Java遊戲編程原理與實踐教程

JavaFX 遊戲程式設計 第三版

其實遊戲演算法都一樣, 在Swing上好了弄透徹了, 也可以輕鬆移植到JavaFX或者網頁上

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200152.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 14:03
下一篇 2024-12-05 14:03

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • JFXtras樣式——美化JavaFX應用的必備神器

    本文將從多個方面對JFXtras樣式進行詳細的闡述,教你如何使用JFXtras樣式來美化你的JavaFX應用。無需任何前置知識,讓我們一步步來了解。 一、簡介 JFXtras是一個…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27
  • 解決js ajax post 419問題

    對於使用ajax post請求時出現的419問題,我們需要進行以下幾個方面的闡述,包括返回碼的含義、可能出現的情況、解決方案等內容。 一、解析419返回碼 419返回碼錶示用戶超時…

    編程 2025-04-27

發表回復

登錄後才能評論