繁体   English   中英

JavaFX 加载 FXML 导致警告并且无法加载文件(皮肤/modena)

[英]JavaFX loading FXML causes warning and fails to load the file (skin/modena)

情况

我正在尝试构建一个 JavaFX 应用程序,对于 GUI,我使用 SceneBuilder 生成 fxml 文件以供不同的根使用。 然后我启动应用程序,在某个时候,我尝试使用new FXMLLoader(App.class.getResource("myFXML.fxml")).load()加载一些 fxml 文件,并将其设置为舞台上场景的 root .


问题

99% 的时间加载完全没有问题,一切都按预期工作,但是 1% 将失败并阻止 fxml 加载而不停止应用程序,而只会抛出以下警告。

WARNING: Caught 'java.lang.ClassCastException: class java.lang.String 
cannot be cast to class javafx.scene.paint.Paint (java.lang.String is in
module java.base of loader 'bootstrap'; javafx.scene.paint.Paint is in 
module javafx.graphics@18 of loader 'app')' while converting value for 
'-fx-background-color' from rule '*.list-view' in stylesheet 
jar:file:///C:/mysystem/.m2/repository/org/openjfx/javafx-controls/18/javafx-controls-18-win.jar!/com/sun/javafx/scene/control/skin/modena/modena.bss

大多数情况下导致它的 fxml 是其中带有 ComboBox 的那个,但我认为这与它无关,因为它发生在任何地方。

重要的是警告也不一致,在最后一行而不是*.list-view其他时候也说*.button ,但我正在做同样的动作来测试它。


重现问题

复制根本不一致,警告是描述性的,似乎问题出在 JavaFX 文件上(在警告中提到)而不是我写的东西。 因此,我找不到一致的方法来重现它或处理异常或其他东西。


到目前为止尝试过

  • 删除组合框(以防万一)
  • 搜索了互联网,没有发现任何关于它的信息
  • 重新安装JDK什么也没做

笔记

我知道我可以提供更多信息可能会有所帮助,但我现在已经筋疲力尽了。 也许稍后会添加编辑。

长话短说

我在另一个线程而不是 FX 线程上进行 FXML 加载( new FXMLLoader(App.class.getResource("myFXML.fxml")).load() )和scene.setRoot(...) 所以请确保使用Platform.isFxApplicationThread(); (如评论中所述)操作发生在 FX 线程上以确保预期的行为。


重要的

答案不完整,它是当前搜索它的任何人的占位符,这解决了问题。


改进

我会尽快尝试用更多信息和可重复的例子来更新问题。 此外,我将在评论的帮助下继续研究,为这个问题找到可靠的解释。 同时,请随时进行编辑或发布新的更好的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM