IDEA不使用操作来创建控制器,而是使用意图(通过 + 或 )激活。它的理念是在编辑FXML文件时保持控制器同步,而不是重新创建它以进行更改来更新它。AltEnter⌥⏎
例如,当您创建 FXML 文件时,IDEA 会提供创建控制器的功能:
首先,我根据需要命名它,然后使用Intenty创建相应的类:
然后,当我向FXML添加内容时,IDEA提供在控制器中创建相应的项目:
与 :fx:id
如果我使用重命名重构来更改fx:id
它将控制器中的相应字段名称重命名为匹配。因此,它不是编辑它,然后重新创建控制器来捕获名称更改,它只是使它们保持同步。但同样,关键是使用重命名重构,而不仅仅是“手动”编辑.fx:id
编辑以回答评论中的后续问题
首先是免责声明...我只涉足JavaFX来编写简单的对话框作为命令行脚本的前端。因此,我绝不是专家,可能不知道IDEA中与JavaFX相关的功能。但是我已经使用IDEA14年了,通常知道在功能和“我如何做”问题方面要寻找什么。
如果您对此有所了解,您能否阐明在Scene Builder中使用这种东西?
每当我使用像Scene Builder这样的所见即所得编辑器时,我仍然会关注并清理它生成的代码。在这方面,我仍然有点老派。我相信IntelliJ IDEA坚持这一理念。
我发现很难相信IDEA没有办法在场景生成器中进行“大规模自动更新”编辑
我可以告诉你,作为一个IDE,IDEA在威世智或批量代码生成方面并不大。相反,它本质上更像是“外科手术”。它的“按意图编码”的理念是输入/编辑你的意图,然后使用意图/快速修复来实现该意图。因此,它所做的任何代码生成都是小而集中的。但。。。在某些情况下,您可以通过打开意图侧边菜单(使用向右箭头键)并选择“修复文件中的所有'问题名称'问题”来要求它同时将意图应用于多个项目。同样,鉴于我对JavaFx工作的经验有限,我可能没有意识到一些事情。但是我没有看到这样的事情,也没有在帮助页面中看到任何东西。→
<soapbox> 当我在2003年第一次开始使用IDEA时,我也想知道我的旧IDE提供的所有向导和批量代码生成功能都在哪里。(我以前使用过 Forte for Java,NetBeans 的前身。起初我很想念他们。然后我开始对一切使用意图和重构。几个月后,我没有错过巫师。又过了几个月,我开始憎恨其他IDE中的巫师。从长远来看,使用意图和重构时,我的工作效率要高得多。我注意到我不再花很多时间来处理编译问题和错误,就像我使用向导时所做的那样。</肥皂盒>
如果我在场景生成器中将fx:id分配给许多按钮等,我是否必须手动进入fxml文件的代码视图,找到所有fx:id,并为每个按钮alt + enter将它们放入控制器?
不幸的是,对于缺少ID的“创建字段”意图,没有可用的批处理模式。因此,您不能使用“全部修复”选项。关于为什么不这样做,我有根据的猜测是,在创建字段时,您有机会为其选择类型。例如,对于 for a 标签,我可能希望将字段键入为 、 、 等。在大多数情况下,您可能会将其键入为FXML中的实际类型。因此,您可能希望打开一个功能请求,要求为“创建字段”意图提供批处理模式,该目的将字段默认为FXML中使用的类型。但是,如果您习惯于使用导航到下一个错误,然后使用+(或)打开快速修复,您会发现可以非常快速地添加缺少的字段。fx:id
Label
Labeled
Control
F2AltEnter⌥⏎
如果我删除了一些fx:id,那么我必须记住它们是哪些,让他们在控制器中手动删除它们?
同样,不要只是“手动”删除 ,请使用 IDEA 重构。删除(或任何内容)时,请使用“安全删除”重构。将光标放在ID上(在FXML文件或控制器中),键入+(或)以启动“安全删除”。fx:id
fx:ids
AltDelete⌘⌦
如果没有用法,则删除该字段。否则,您会收到警告:
单击“查看用法”按钮。“查找”工具栏将打开,显示用法。
更新代码以删除其用法。使用“重新运行安全删除”按钮来监视您的进度。完成所有用法后,点击“执行重构”按钮以删除用法。虽然这似乎比某种重新生成控制器选项更复杂,但我的问题是这样的功能如何处理控制器内方法中该字段的使用?它会不会重新创建字段,在我的控制器中留下编译错误吗?它将如何“重新生成”我对控制器所做的所有自定义?
安全删除还可以使您的代码没有错误。如果我每次去删除一个我绝对知道没有在任何地方使用的东西时,我都有一美元,只是为了安全删除重构,弹出一个关于它被使用的地方的警告,我完全忘记了。