本文目錄一覽:
- 1、JavaFX文檔什麼是JavaFX
- 2、java瀏覽器的開發html顯示異常,一定要內嵌瀏覽器嗎
- 3、如何在JavaFX的WebView中通過JavaScript回調Java的程序
- 4、javafx webview js交互問題
- 5、java做一些小遊戲需要學什麼
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