Intellij Idea IntelliJ,是否可以像在NetBeans中一样“生成控制器”?

iih3973s  于 2022-12-11  发布在  其他
关注(0)|答案(4)|浏览(200)

有IntelliJ和NetBeans经验的人是否知道,当右键单击相应的FXML文件时,IntelliJ是否具有与NetBeans“Make controller”类似的功能?
我认为这是非常重要的,因为它更新,如果我添加了新的东西(例如FXID),如果我删除了它等-也把它放在正确的地方本身。
我知道您可以在Scene Builder中转到 “View -〉Show Sample Controller Skeleton”,但这还不够自动化,尤其是在Jetbrains IDE中。
这也意味着以下链接不是答案:how to do netbeans'"make controller" in intellij idea
[x1c 0d1x](第一次)

pu82cl6c

pu82cl6c1#

IDEA使用intentions(通过Alt+Enter或激活),而不是创建控制器,它的理念是在编辑FXML文件时保持控制器同步,而不是重新创建它来更新它。
例如,当您创建FXML文件时,IDEA会提供创建控制器的功能:

首先我根据需要命名它,然后使用Intention创建相应的类:

然后,当我向FXML添加内容时,IDEA会在控制器中创建相应的项:

fx:id类似:

如果我使用重命名重构来更改fx:id
x1c4d 1x指令集
它会重命名Controller中相应的字段名以进行匹配。因此,它只是保持它们的同步,而不是编辑它,然后重新创建控制器来捕获名称更改。但同样,关键是使用重命名重构,而不仅仅是“手动”编辑fx:id

编辑以回答评论中的后续问题

  • 首先声明...... * 我只涉猎JavaFX,编写简单的对话框作为命令行脚本的前端。因此,我绝不是Maven,可能不知道IDEA中的JavaFX相关特性。但我已经使用IDEA 14年了,通常知道在特性和“如何做”问题方面要寻找什么。

如果你知道一些关于场景构建器的东西,你能提供一些关于使用场景构建器的信息吗?
每当我使用像Scene Builder这样的WYSIYWG编辑器时,我仍然会关注并清理它生成的代码。在这方面,我仍然有点老派。我相信IntelliJ IDEA坚持这种哲学。
我发现它真的很难相信IDEA没有办法“大规模自动更新”的编辑在场景构建器
作为一个IDE,我可以告诉你,IDEA并不热衷于向导或大规模代码生成,相反,它更像是一种“外科手术”。它的“按意图编码”哲学是输入/编辑您的意图,然后使用一个意图/快速修复来实现这个意图。因此,它所做的任何代码生成都是小而集中的。* 但是... * 在某些情况下,您可以通过打开意向侧菜单来要求它同时将意向应用于多个项目(使用右箭头→键)并选择“修复文件中的所有'* 问题名称 *'问题”。同样,鉴于我对JavaFx工作的经验有限,我可能没有意识到一些东西。但我没有看到任何这样的东西会在哪里,我没有看到任何在帮助页面。
当我在2003年第一次开始使用IDEA时,我也想知道我的旧IDE提供的所有向导和大量代码生成特性都在哪里。(我以前在NetBeans的前身Java中使用过Forte。)一开始我很怀念它们。然后我开始在所有事情上使用意图和重构。几个月后,我不再怀念向导。又过了几个月,我开始讨厌其他IDE中的向导。从长远来看,我使用意图和重构的效率要高得多。我注意到我不再花很多时间处理编译问题和bug,而我在使用向导时会这样做。
如果我在Scene Builder中将fx:id分配给许多按钮,那么我是否必须手动进入fxml文件的代码视图,找到所有的fx:id,并为每个fx:id使用alt+enter将它们放入控制器中?
不幸的是,对于“创建字段”的目的,缺少ID”没有一个可用的批处理模式。所以你不能使用“修复所有”选项。我有根据的猜测是,当创建字段时,你有机会为它选择类型。例如,对于标签fx:id,我可能想键入字段LabelLabeledControl等。在大多数情况下,您可能会将其键入为FXML中的实际类型。因此,您可能希望打开一个功能请求,要求为“创建字段”目的提供一个批处理模式,该模式将字段默认为FXML中使用的类型。不过,如果您习惯于使用F2导航到下一个错误,然后使用Alt+Enter(或)打开快速修复,您会发现可以非常快速地添加缺少的字段。
如果我也删除了一些fx:id,那么我必须记住它们是哪些,在控制器中手动删除它们?
同样,不要只是“手动”删除fx:id,而要使用IDEA重构。当删除fx:ids(或任何东西)时,使用“安全删除”重构。将光标放在id上(在FXML文件或Controller中),键入Alt+Delete(或)启动“安全删除”。

如果没有使用示例,则会删除该字段。否则会出现警告:


指令集
单击“查看使用示例”按钮。“查找”工具栏将打开并显示使用示例。

更新您的代码以删除它们的使用示例。使用“重新运行安全删除”按钮来监视您的进度。完成所有使用示例后,单击“执行重构”按钮以删除使用示例。虽然这可能看起来比某种重新生成控制器选项更复杂,我的问题是这样一个特性如何处理控制器中方法中该字段的使用?它会不会在我的控制器中留下一个编译错误而不重新创建字段?它会如何“重新生成”我对控制器所做的所有定制?
安全删除还可以让你的代码没有错误。如果我有一美元,每次我去删除一个东西,我绝对知道没有被使用的地方,只有安全删除重构弹出一个警告,它被使用的地方,我完全忘记了。

kokeuurv

kokeuurv2#

如果使用Javaru的解决方案,那么创建的字段将是公共的,并且没有@FXML注解。
若要变更,请前往:档案|设定|编辑器|代码样式| java |代码生成|默认可见性-选择“升级”或“专用”,然后选中底部的“使用外部注解”。
第二种解决方案:在scene builder中打开fxml文件,在窗口左下角的控制器部分设置控制器类。转到:观|显示控制器框架示例和复制控制器类代码。
这是我的第一篇文章,希望我能帮上忙。:)

gzjq41n4

gzjq41n43#

我看不到创建方法或创建字段
我看到这个

8aqjt8rx

8aqjt8rx4#

转到.fxml文件,出现红色错误元素:在我的例子中你的句柄函数的名字。只要按下“创建”就可以了。Intelij give you possibilities to create your event

相关问题