我在项目中使用FontAwesomeFX,并在标志符号名称属性设置为FontAwesomeIconView的按钮内添加了WINDOW_MINIMIZE。这部分可以看作是XML,如下所示。

<Button fx:id="minimizeButton" mnemonicParsing="false">
   <graphic>
      <FontAwesomeIconView fill="WHITE" glyphName="WINDOW_MINIMIZE" />
   </graphic>
</Button>


问题是,它在SceneBuilder中成功显示,如下所示:

java - FontAwesomeIconView在SceneBuilder中显示图标,在应用程序中失败-LMLPHP

但是,当我启动程序时,我在调试日志中看到了这些:

Dec 21, 2017 11:49:50 PM de.jensd.fx.glyphs.GlyphIcon updateIcon
SEVERE: Icon 'WINDOW_MINIMIZE' not found. Using 'ANCHOR' (default) instead


应用程序显示ANCHOR而不是WINDOW_MINIMIZE

java - FontAwesomeIconView在SceneBuilder中显示图标,在应用程序中失败-LMLPHP

由于FontAwesomeIconView s according to this answer的大小问题,我还应用了此CSS规则(以防与问题有关的情况):

.glyph-icon{ -fx-font-family:"FontAwesome"; }


为什么在SceneBuilder和Maven中导入不同

正如您在下面的环境部分中看到的那样,我在Maven配置文件和SceneBuilder中导入了其他内容。

好吧,原因是,奇怪的是,导入FontAwesomeIconView时SceneBuilder看不到de.jensd:fontawesomefx:8.9,这就是为什么我在SceneBuilder中导入de.jensd:fontawesomefx-fontawesome:4.7.0-9.1.2并与Maven导入一起很好地工作的原因。

那么,为什么我不这样做呢?我的意思是,为什么不将de.jensd:fontawesomefx-fontawesome:4.7.0-9.1.2导入我的pom.xml中。奇怪的是,它是用Java 9编译的,而我的项目是在Java 8上运行的。自然地,它引发了类版本异常或类似的异常。另外,我也不知道迁移到Java 9是否会造成更多麻烦,因此我没有将其导入pom.xml中。



环境


Java 1.8.0_151
JavaFX 8.0.151内部版本12
SceneBuilder 9.0.1
de.jensd:fontawesomefx-fontawesome:4.7.0-9.1.2(Scenebuilder)
[GroupID] de.jensd [ArtifactID] fontawesomefx [Version] 8.9(在pom.xml中)

最佳答案

好吧,我仔细研究了一下,发现奇怪的是,FontAwesomeIcon中的de.jensd:fontawesomefx:8.9枚举(这是Maven Central Repository中的最新版本)不包含任何WINDOW_MINIMIZE图标。

因此,我将图标更改为FontAwesomeIcon中的其他图标。到目前为止,这已经解决了我的问题,但是这个问题仍未解决。

09-05 09:20