我一直试图在MaterialFX中使用JavaFX设计库(如jFoenix),但我没有成功。我添加了所需的依赖项:
此外,我还在模块info.java中添加了requires org.glavo.materialfx.adapter;
:
module org.example {
requires javafx.controls;
requires javafx.fxml;
requires com.jfoenix;
requires org.glavo.materialfx.adapter;
opens org.example to javafx.fxml;
exports org.example;
}
有人知道我如何使用这个库吗?因为作者并没有很好地解释如何使用这个库。我想提一下,它在场景生成器的最新版本中工作得很好,所以我想知道为什么它在IntelliJ中不这样做。
发布于 2022-04-19 20:58:45
使用Maven (或Gradle)进行依赖关系管理
您正在使用Maven (至少这就是截图显示的思想,尽管它可以是Gradle使用Maven存储库)。
您应该将依赖项定义为pom.xml
(或build.gradle
)中的maven依赖项,然后将构建文件重新导入Idea。
不应在Idea中手动设置库依赖项。
Idea和Maven将认识到您有一个模块化项目,当您在Maven中定义了依赖项时,它们将自动将新的依赖模块放在模块路径上进行编译和执行。
可以通过搜索maven存储库找到maven工件:
依赖性信息是:
<dependency>
<groupId>io.github.palexdev</groupId>
<artifactId>materialfx</artifactId>
<version>11.13.5</version>
</dependency>
MaterialsFX的模块信息需要VirtualizedFX
。VirtualizedFX模块也需要在模块路径上。用于pom.xml的MaterialsFX文件包含对io.github.palexdev:virtualizedfx:11.2.6
的依赖关系。因此,依赖模块可以通过Mavan和Idea与Java平台模块系统的内置集成自动访问您的构建和运行时。
需要正确的模块名
库的模块名不是org.glavo.materialfx.adapter
,而是MaterialFX
,因此您应该使用:
requires MaterialFX;
不是:
requires org.glavo.materialfx.adapter;
我建议您花一些时间学习构建工具和Java平台模块系统的教程。
示例应用程序
示例是通过运行idea 新的JavaFX项目向导,然后修改结果项目来创建的。
pom.xml
除了对MaterialFX库具有依赖关系外,还需要对javafx-控件和javafx具有依赖关系。
MaterialFX在构建和运行时都需要这两者(即使在应用程序中不使用fxml )。
MaterialFX pom.xml没有显式的JavaFX依赖项配置,因此需要在项目pom.xml中定义这些依赖项(无论如何,要确保应用程序使用的是特定的JavaFX版本)。
<?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>material</artifactId>
<version>1.0-SNAPSHOT</version>
<name>material</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>18</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>18</version>
</dependency>
<dependency>
<groupId>io.github.palexdev</groupId>
<artifactId>materialfx</artifactId>
<version>11.13.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.9.0</version>
<configuration>
<source>18</source>
<target>18</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
module-info.java
module com.example.material {
requires MaterialFX;
exports com.example.material;
}
MaterialApplication.java
package com.example.material;
import io.github.palexdev.materialfx.controls.MFXButton;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class MaterialApplication extends Application {
@Override
public void start(Stage stage) {
stage.setScene(new Scene(new MFXButton("mfx")));
stage.show();
}
public static void main(String[] args) {
launch();
}
}
https://stackoverflow.com/questions/71931192
复制相似问题