首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MaterialFX在IntelliJ中的应用

MaterialFX在IntelliJ中的应用
EN

Stack Overflow用户
提问于 2022-04-19 20:50:44
回答 1查看 698关注 0票数 1

我一直试图在MaterialFX中使用JavaFX设计库(如jFoenix),但我没有成功。我添加了所需的依赖项:

此外,我还在模块info.java中添加了requires org.glavo.materialfx.adapter;

代码语言:javascript
运行
复制
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中不这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-19 20:58:45

使用Maven (或Gradle)进行依赖关系管理

您正在使用Maven (至少这就是截图显示的思想,尽管它可以是Gradle使用Maven存储库)。

您应该将依赖项定义为pom.xml (或build.gradle)中的maven依赖项,然后将构建文件重新导入Idea。

不应在Idea中手动设置库依赖项。

Idea和Maven将认识到您有一个模块化项目,当您在Maven中定义了依赖项时,它们将自动将新的依赖模块放在模块路径上进行编译和执行。

可以通过搜索maven存储库找到maven工件:

依赖性信息是:

代码语言:javascript
运行
复制
<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,因此您应该使用:

代码语言:javascript
运行
复制
requires MaterialFX;

不是:

代码语言:javascript
运行
复制
requires org.glavo.materialfx.adapter;

我建议您花一些时间学习构建工具和Java平台模块系统的教程。

示例应用程序

示例是通过运行idea 新的JavaFX项目向导,然后修改结果项目来创建的。

pom.xml

除了对MaterialFX库具有依赖关系外,还需要对javafx-控件和javafx具有依赖关系。

MaterialFX在构建和运行时都需要这两者(即使在应用程序中不使用fxml )。

MaterialFX pom.xml没有显式的JavaFX依赖项配置,因此需要在项目pom.xml中定义这些依赖项(无论如何,要确保应用程序使用的是特定的JavaFX版本)。

代码语言:javascript
运行
复制
<?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

代码语言:javascript
运行
复制
module com.example.material {
    requires MaterialFX;   
    exports com.example.material;
}

MaterialApplication.java

代码语言:javascript
运行
复制
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();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71931192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档