JavaFX Scenebuilder在FXML与控制器不在同一包中时无法识别id。

3
我使用Java SE7安装了NetBeans,并且JavaFX示例正常运行。在SceneBuilder中,我可以为每个控件定义并注释的@FXML选择一个ID。但是,我喜欢有组织地管理我的项目。当我创建一个新包并将我的FXML文件移动到那里(myapp/views),而控制器仍然留在原来的位置——myapp,那么在SceneBuilder中似乎找不到ID。
我知道FXML中的“controller class”,但是既然我没有移动我的控制器,那就不应该更改它。
更具体地说,当我的控制器和FXML都在“holidayapp”包中时,它可以工作。将FXML移动到子包“holidayapp/views”中,则无法工作。控制器类保持不变。
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="holidayapp.HolidayViewController">

因为HolidayViewController保留在根包中,因此我只需将fxml文件从主包移动到子包中。

我希望在SceneBuilder中看到HolidayViewController的ID。在子包中编译和运行fxml从未出现任何问题。

谢谢

2个回答

2

看起来 FX JIRA 即将到达生命周期终点,而且我无法看到上述链接,因为我没有登录。你知道这个链接也被移动了吗? - D-Dᴙum
@Kerry JavaFX问题跟踪器已经与OpenJDK问题跟踪器合并。我已经更新了链接。 - Puce
@Kerry 注意,由于Oracle不再发布SceneBuilder二进制文件,我不确定是否有人正在解决SceneBuilder问题。 - Puce
谢谢Puce。我知道SceneBuilder已经成为开源软件了。Gluon正在开发一个版本链接,我自己也想尝试着去“修复”问题,特别是原帖所提到的问题。如果使用Maven,这会很烦人。 - D-Dᴙum

0
我处理这个问题的方式是将我的主类放入视图中(即扩展Application的类)。这使我可以访问我的控制器类、它们的变量和方法。这适用于SceneBuilder 1.1。
我只能针对使用Eclipse而不是NetBeans进行说明,因此这样做可能仍然没有任何效果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接