java1.8之后的版本如何引入javafx

相信很多朋友已经知道了orcale官方在java9之后,就将javafx从java中分离了出来。如果我们想在高版本中使用javafx,就必须自己引入javafx。那么,如何引入呢?


使用的软件:idea

第一步:打开idea,创建一个java项目(如SpringBoot)

e3684df3e59440d5bdbd6fa2ae1b9302.png

第二步:下载对应版本的javafx的sdk

下载网址:JavaFX 21https://jdk.java.net/javafx21/

 如果,你的版本是java17,那么可以将上面链接中的javafx21改为javafx17

4b165fb176834e9f803690b10c92b006.png

然后选择你的操作系统,对应下载即可。

第三步:解压下载的javafx压缩包

1c86c384c9ef4876907c39014bb33080.png

解压后的文件夹可以放在D盘,如果C盘的内存吃紧。

我的路径:D:\code\javafx-sdk-21.0.2

第四步:在项目的pom.xml文件中导入相关依赖

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>21.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-swing</artifactId>
            <version>21.0.1</version> <!-- 请使用适合你项目的版本 -->
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>21.0.1</version>
        </dependency>

第五步:在项目结构中导入依赖

点击文件(file),选择项目结构(Project Structure)

98495ec30a8440138cdc3ffd096fe18f.png

选择模块(module)

ba48523aa29745558da9eab82a32d52d.png

点击依赖

735ce98c3b9548b99731545a5be46ff1.png

点击+号,选择jar或目录

8802e8330109473d8991fe09ad8d7e4d.png

找到你下载后解压到的文件夹,并选择其中的lib包,并点击右下角的应用

2d37156d5964437ab187e122daa0a2be.png

选择库(library)

127c32b50253409f9ba37f31a0acff91.png

点击加号,选择java

3cff7c610d614258b4abf05fb0c9480f.png

找到你下载后解压到的文件夹,并选择其中的lib包

f7e9c41ae3214efbb53f9642ba1d045b.png

选择确定

27c6a6595a95448e9e0f79c9d3a5f12d.png

最后,点击右下角的应用。

第六步:添加虚拟机选项

点击右上角的运行框选项的Ⅴ,并点击编辑配置

5d92edcc7ef94ebea43112ab44764b71.png

点击修改选项

bd871976aa8e49089901f7d4fd1305c9.png

点击添加虚拟机选项

8f1ac25f6f32425aa655817a8f8f5c00.png

在被指向的框框里,添加如下代码:

--module-path D:\code\javafx-sdk-21.0.2\lib --add-modules javafx.controls,javafx.fxml 

0b03c9055b6e4e09b23f57def6609372.png

添加选项后,点击下方的应用和确定

最后,编写一段代码进行测试:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class CameraExample extends Application {
        @Override
        public void start(Stage primaryStage) {
            // 创建一个可观察的列表,用于存储摄像头设备名称
            ObservableList<String> cameraOptions = FXCollections.observableArrayList();
            // 尝试获取摄像头设备列表(这里假设已经有获取摄像头设备列表的方法)
            // 例如,在Windows系统中可以使用一些本地库或者JavaCV来获取
            // 这里为了简化示例,先假设有一个名为"Camera 1"的摄像头
            cameraOptions.add("Camera 1");
            // 创建一个下拉菜单,用于选择摄像头
            ComboBox<String> cameraComboBox = new ComboBox<>(cameraOptions);
            // 创建一个按钮,用于拍照
            Button captureButton = new Button("Capture");
            // 创建一个ImageView,用于显示拍摄的照片
            ImageView imageView = new ImageView();
            // 为拍照按钮添加事件处理器
            captureButton.setOnAction(event -> {
                try {
                    // 假设已经有一个方法可以从选定的摄像头获取图像
                    // 这里简化为创建一个空白的BufferedImage作为示例
                    BufferedImage bufferedImage = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);
                    // 将BufferedImage转换为JavaFX的Image对象
                    Image image = SwingFXUtils.toFXImage(bufferedImage, null);
                    // 将图像设置到ImageView中显示
                    imageView.setImage(image);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            // 创建一个垂直布局容器,并将下拉菜单、拍照按钮和ImageView添加到容器中
            VBox layout = new VBox(10);
            layout.getChildren().addAll(cameraComboBox, captureButton, imageView);
            // 创建一个场景,并将布局容器添加到场景中
            Scene scene = new Scene(layout, 300, 300);
            // 将场景设置到舞台上,并设置舞台标题
            primaryStage.setScene(scene);
            primaryStage.setTitle("Camera Application");
            // 显示舞台
            primaryStage.show();
        }
    public static void main(String[] args) {
        launch(args);
    }
}

运行结果:

2ba4b99ab51b4cb18aed51530c7eed45.png

文章到此结束! 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值