- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
背景:我创建了一个 JavaFX 应用程序,使用 JFXPanel 嵌入到 Swing 框架中。我一直使用 Eclipse 作为 IDE。 “主应用程序”是另一个类,它仅用于创建扩展 JFXPanel 的类的实例,以在实例化时加载我的 .fxml 文件。当从 Eclipse 执行主类时,一切都很好,我的 .fxml 文件中指定的 fx:controller 调用了它的 initialize()
方法(我可以从它在加载时对 UI 所做的更改看出)并且没有任何问题。
但是,当我将所有内容打包到 JAR 中并尝试将 JFXPanel 扩展类添加到 Swing JFrame 实例时,它会设法加载 .fxml 文件,仅读取图像、样式表等,其余代码按预期运行,但从未调用 fx:controller
的 initialize()
方法。我从 jar 内部或外部的其他类访问该类没有问题,我什至尝试设置一个将返回 Controller 实例的 ControllerFactory,并尝试设置 FXMLLoader
的类加载器以及使用调用 load()
的静态和非静态方法的各种组合。结果总是一样的:从 IDE 启动时可以工作,但从打包的 jar 启动时则不行。我知道 jar 没有丢失任何文件,因为就像我说的那样,从 Java 代码中查找类没有问题,并且捆绑的 fxml/css 文件似乎加载得很好,减去了 Controller 问题。
有人曾经遇到过这种情况,或者知道 FXMLLoader
无法设置 Controller 会发生什么情况吗?这可能是某种错误吗?
最佳答案
在将 JavaFX 软件打包到 .jar 文件中时,我遇到了类似的问题。原来是相对路径的问题。您的 IDE 对此没有任何问题,但是当在 jar 中编译时,它就会出现问题。
使用以下代码调用我的 .fxml 文件解决了这个问题。
getClass().getClassloader().getResource("/my/view/selector.fxml")
要说这是您的错误的“原因”,我不确定,但这确实困扰了我一段时间,并且似乎几乎就是我遇到的问题。
关于JavaFX 2.2 Controller 在 JAR 文件中加载时未调用initialize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900047/
在我们的数据库表上,我们使用两个唯一的非聚集索引来创建跨四个字段的唯一约束。我们使用两个,因为其中一个字段 ZipCode 是一个可为空的字段。如果表中存在一条包含 ZipCode 的 null 条目
我刚刚开始学习 Rails 3 教程,以便对框架有一点熟悉,但我在生成 schema.rb 时遇到了问题。我的操作系统是 Windows 7 x64、Ruby 1.9.2、MySQL2 gem 0.2
我是一名优秀的程序员,十分优秀!