我正在尝试使用 ControlsFX 库中的 MaskerPane 控件。我在 Scene Builder 中安装了该库,将 MaskerPane 控件插入容器中,它就可以正常工作了。
但是,即使导入库后,IntelliJ 也无法识别该控件。
它要求我通过 Maven 导入它,尽管我已经这样做了。
先感谢您。
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>PaneTeste</artifactId>
<version>1.0-SNAPSHOT</version>
<name>PaneTeste</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>5.9.2</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.6</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>17.0.6</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>11.1.2</version>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>11.1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</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.paneteste/com.example.gridpanetest.GridCenterApplication</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>
正确定义 Java 模块
最有可能的是,您的问题是您使用了
module-info.java
(问题中未显示)并且没有添加使用 controlsfx 库的要求。您可以从ControlsFX 文档中看到该模块的名称是
org.controlsfx.controls
。要使用该模块,您需要在以下位置输入
module-info.java
:请参阅了解 Java 模块以了解更多信息。
某些 ControlsFX 控件并非为与 Java 模块系统无缝协作而编写的。请确保您阅读并理解有关使用 ControlsFX 和模块系统的 Wiki 页面,并将任何学习内容应用到您的使用中:
注意:JDK 9+ ControlsFX 文章引用了 VM 选项,在 Idea 中设置这些选项可能很棘手。
无关
不要手动添加作为托管 Maven 依赖项的库。删除手动添加的库并同步 Maven 和 Idea 项目。
使用 Maven 管理所有依赖项(不要手动添加 jfoenix;在 pom 文件中定义依赖项)。
jfoenix 缺乏维护,且与现代 JavaFX 发行版结合时会出现问题,请考虑使用MaterialFX。
如果您在 Idea(2024 版)中创建新项目,我认为它为您提供了添加 ControlsFX 的选项。因此,您可以尝试一下,并将创建的项目(尤其是
module-info.java
)与您自己的项目进行比较。