前言
Jdk 从 1.8 开始 jdk 自带 JavaFX,到 Jdk 11 开始 jdk 不再内置 JavaFX,所以如果你使用的是高版本的 jdk 在使用 javaFX 的时候就需要先安装 javaFX,并在 idea 里进行配置。
本文主要是对高版本 jdk 安装配置 javaFX 进行讲解,在本文开始前,你的电脑安装的 jdk 版本应该大于等于 17 。
如果你还没安装 jdk17 ,可以参考 jdk17安装,多版本jdk安装切换 安装
如果你对 javaFX ,感兴趣可以访问 javaFX 官网首页
(你也可以在电脑上安装多个版本的 jdk ,在 idea 项目设置里指定使用已安装的 jdk 17 版本)
使用 javaFX 可以通过下载 javaFX SDK 然后导入到项目中,也可以通过 Maven 自动下载依赖使用,下面讲解这两种方式。
一、 javaFX 各模块名和作用
根据 官网 javaFX 模块说明 ,javaFX SDK 里有以下模块:
模块名 | 说明 |
---|---|
javafx-controls | 定义可用于JavaFX UI工具包的UI控件、图表和外观。 |
javafx-fxml | 为JavaFX UI工具包定义FXML API。 |
javafx-base | 定义JavaFXUI工具包的基本API,包括绑定、属性、集合和事件的API。 |
javafx-graphics | 定义JavaFX UI工具包的核心场景API(如布局容器、应用程序生命周期、形状、转换、画布、输入、绘画、图像处理和效果),以及动画、css、并发、几何、打印和窗口化的API。 |
javafx-media | 定义用于播放媒体和音频内容的API,作为JavaFX UI工具包的一部分,包括MediaView和MediaPlayer。 |
javafx-swing | 为JavaFXUI工具包中包含的JavaFX/Swing互操作支持定义API,包括SwingNode(用于在JavaFX应用程序中嵌入Swing)和JFXPanel(用于在Swing应用程序中插入JavaFX)。 |
javafx-web | 为JavaFX UI工具包中包含的WebView功能定义API。 |
简单说明一下:
javafx-controls :用于显示窗口、外观和场景 scene;
javafx-fxml:用于界面的布局。javaFX 可以使用 java 代码来对页面布局并且设置各种控件,当然也可以使用 fxml 来编写,使用 fxml 的好处是界面相关的布局、按钮等显示的控件可以在 fxml 里编写,而逻辑处理可以只由 java 代码来处理,这样分层比较清晰,写得代码比较少。如果你布局和控件也使用 java 代码编写,那么可以不必引入 javafx-fxml 模块。
javafx-media:用于播放视频、音频的 api 。如果你想使用 javaFX 开发一个视频播放器,那么就需要引入这个模块。
javafx-web:用于打开网页和显示本地的 html 。如果你想在你开发的应用里嵌入一个网页,比如百度,或者你想嵌入一个你本地的静态 html 页面,那么就需要引入这个模块。
二、方式一:通过 Maven 使用 javaFX
1.创建 JavaFx 类型的项目
(或者创建Maven 类型的项目也可以)
2.创建项目后修改 pom.xml
项目创建后 pom.xml 里默认只 引用了 JavaFx 的 javafx-controls 和 javafx-fxml 模块,如果需要用到其他模块可以根据自己需要加上。(我这里全部引用了,并且所有模块用了最新的 20.0.1 版本。)
下面是我的 pom.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>javafx</artifactId>
<version>1.0-SNAPSHOT</version>
<name>javafx</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 定义可用于JavaFX UI工具包的UI控件、图表和外观。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>20.0.1</version>
</dependency>
<!-- 为JavaFX UI工具包定义FXML API。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>20.0.1</version>
</dependency>
<!-- 定义JavaFXUI工具包的基本API,包括绑定、属性、集合和事件的API。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>20.0.1</version>
</dependency>
<!-- 定义JavaFX UI工具包的核心场景API(如布局容器、应用程序生命周期、形状、转换、画布、输入、绘画、图像处理和效果),以及动画、css、并发、几何、打印和窗口化的API。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>20.0.1</version>
</dependency>
<!-- 定义用于播放媒体和音频内容的API,作为JavaFX UI工具包的一部分,包括MediaView和MediaPlayer。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>20.0.1</version>
</dependency>
<!-- 为JavaFXUI工具包中包含的JavaFX/Swing互操作支持定义API,包括SwingNode(用于在JavaFX应用程序中嵌入Swing)和JFXPanel(用于在Swing应用程序中插入JavaFX)。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>20.0.1</version>
</dependency>
<!-- 为JavaFX UI工具包中包含的WebView功能定义API。 -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>20.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<executions>
<execution>
<!-- Default configuration for running with: mvn clean javafx:run -->
<id>default-cli</id>
<configuration>
<mainClass>com.example.javafx/com.example.javafx.HelloApplication</mainClass>
<launcher>app</launcher>
<jlinkZipName>app</jlinkZipName>
<jlinkImageName>app</jlinkImageName>
<noManPages>true</noManPages>
<stripDebug>true</stripDebug>
<noHeaderFiles>true</noHeaderFiles>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
三、方式二:手动下载 javaFX sdk 并引入项目
1. javaFX下载
去 javaFX 官网 选择你要下载的版本和你电脑的操作类型,然后下载 SDK ,这里推荐下载 21.0.1 版本。
因为 21.0.1 是当前比较新且长期支持的 LTS 版本。
2. 环境变量配置
下载后的压缩安装包解压到你的安装目录里,然后新建环境变量PATH_TO_FX ,对应的值是 javaFx 安装包下对应的lib目录
3. IDEA中配置
(1)选择 file --> Project Structure --> Modules–> Dependencies,然后把 javaFX 安装包下对应的 lib目录里的所有模块 jar 包都依赖上。
(2)选择 Run --> Edit ConFiguratiobs
或者 idea 里右上角选择 Edit ConFiguratiobs
(3)选择 Modify options --> Add VM options
(不同版本的 idea 里 Add VM options 位置可能会略有不同)
路径填自己的 javaFX 安装路径:
--module-path "D:\Program\javaFx\javafx-sdk-21.0.1\lib" --add-modules javafx.controls,javafx.fxml,javafx-base,javafx-graphics,javafx-media,javafx-swing,javafx.web
点击 apply 和 OK 就能正常使用 javaFX 了
四、javaFX 示例
通过上面两种方式的任意一种你已经创建了一个 javaFX 项目,你可以在你的启动类里的 start 方法里写一些代码测试。
下面是我的启动类里的代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloApplication extends Application {
@Override
public void start(Stage stage) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Label l = new Label("Hello, 你的JavaFX版本是: " + javafxVersion + ", Java版本是 " + javaVersion + ".");
Scene scene = new Scene(new StackPane(l), 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
输出效果:
其他示例可以参考我的文章:
javaFX WebView使用及打开网页
JavaFX实例:简单日历的实现
五、推荐 javaFX 几个学习的网址
JavaFX Documentation Project
JavaFX Tutorial
JavaFX Tutorial
JavaFX - 教程
另外,如果你对 javaFX 感兴趣,你可以看下我 gitgub上使用 javaFX 开发的一个应用: XTool
其他 javaFX 相关学习教程可参考:文章来源:https://www.toymoban.com/news/detail-459198.html
JavaFX 入门
JavaFX的几个新特性,让Swing彻底过时
JavaFX FXML教程
JavaFX FXML教程
JavaFX FXML教程
JavaFX FXML
JavaFX入门(四):JavaFX布局(一)
最通俗易懂——JavaFX可视化窗口如何插入图片
快速创建基于JavaFX的桌面App
JavaFx的那些坑
JavaFX 加载 fxml 文件 方法三 在 Controller 对 Stage 进行操作
Stage窗口介绍,打开新窗口
场景切换
fxml场景切换
JavaFX - 实现管理多个Stage窗口切换及源码解析
JavaFx的Stage管理实现切换案例——登录页面
scenebuilder教程-与Controller类进行绑定、scenebuilder生成Controller类
JavaFx教程第四部分:CSS 样式
JavaFx之整合JFoenix(十四)
JavaFX绑定
JavaFx2.0—Binding
JavaFX属性与绑定
场景切换
场景切换
JavaFX: FXML嵌套和子Controller(Sub-Controller)
JavaFx嵌套控制器
使用 JavaFx 示例将文本和图像复制到剪贴板文章来源地址https://www.toymoban.com/news/detail-459198.html
到了这里,关于javaFX安装及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!