网站首页 > java教程 正文
在本文中,我们将向大家介绍如何使用Intellij IDEA 2020构建Maven版的OpenJFX15项目。Maven环境的搭建有两种方式,一种是创建工程的时候直接选择Maven项目,然后一阵输入,一种就是直接创建一个JavaFX工程,然后里面配置Maven,其实效果都一样。本文介绍后者,这样读者更清楚原理。
第一步:打开IntelliJ IDEA 2020,新建新项目,选择Java FX,然后点击Next按钮。
第二步:设置项目名和项目路径,点击Finish按钮。
第三步:此时的项目目录结构如下
由于没有导入JavaFX相关库,此时运行会报错。
第四步:为了方便维护,我们使用Maven管理。右键项目名,选择 Add Framework Support,我们找到 maven 选项,点击OK。
第五步:此时仍不能运行哦,还需引入相关依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>HelloWorld</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
<javafx.version>15</javafx.version>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>
</project>
第六步:刷新pom.xml文件使其导入相关依赖,右键 pom.xml - Maven - Reload project。
第七步:当我们此时运行项目会提示:“错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序”。
此报错原因是OpenJFX11之后,如果不以模块化 方式启动,就会没有模块信息,因此提示这个错误。不过我们还有其他办法来绕开 LauncherHelper 的检查,能够以非模块化 Java 程序的方式运行程序。思路是:使程序的入口 main() 不继承自 javafx.application.Application。
我们可以单独新创建一个启动类:暂定名称为AppMain。
package sample;
import javafx.application.Application;
public class AppMain {
public static void main(String[] args) {
Application.launch(Main.class, args);
}
}
然后删除Main类的main方法。
最后运行AppMain类的main方法,此时会提示以下图片错误。发生错误的原因是在启动时 maven 没有将 sample.fxml 文件打包,导致在 Main 类中想要加载此文件时报错。
第八步:明白上述错误的原因,我们只需将 sample.fxml 文件放入我们的 resources 文件夹中,同时修改Main 类中的 Start 方法,将文件加载路径定义为由"sample.fxml"修改为"/sample.fxml",如下图所示。
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
}
第九步:至此我们可以重新运行AppMain类的main方法,不出意外的就可以看到Hello World窗口啦。
猜你喜欢
- 2024-11-09 SpringBoot入门之工程搭建(IDEA版)
- 2024-11-09 Spring Initializer+IntelliJ IDEA创建Spring Boot项目(图文)
- 2024-11-09 2020年IntelliJ IDEA最新最详细配置图文教程
- 2024-11-09 第六篇:使用IntelliJ IDEA编写你的第一个Java程序
- 2024-11-09 「Java开发中文指南」IntelliJ IDEA插件安装(一)
- 2024-11-09 SpringBoot项目的创建和配置的详细介绍
- 2024-11-09 IntelliJ IDEA搭建SpringBoot(intellij idea搭建聊天界面)
- 2024-11-09 IntelliJ IDEA 项目(idea java项目)
- 2024-11-09 idea搭建spring cloud项目-父子项目
- 2024-11-09 IDEA新建项目时的默认配置与模版配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)