作者:ERIK又 | 来源:互联网 | 2023-01-09 13:49
有没有IntelliJ和NetBeans经验的人知道,当右键单击相应的FXML文件时,IntelliJ是否具有与NetBeans"Make controller"类似的功能?
我认为这是非常重要的,因为它更新,如果我添加了一些新东西(例如FXID),如果我删除它等等 - 并且还将它放在正确的位置.
我知道你,在Scene Builder中,可以进入"View - > Show Sample Controller Skeleton",但这只是自动化程度不够,尤其是来自Jetbrains IDE.
这也意味着以下链接不是答案:
如何在intellij想法中做netbeans的"make controller"
[]
1> Javaru..:
IDEA不是采取行动来创建控制器,而是使用意图(通过Alt+ Enter或激活⌥⏎).它的理念是在编辑FXML文件时保持控制器同步,而不是重新创建它以通过更改来更新它.
例如,当您创建FXML文件时,IDEA提供创建控制器:
首先,我根据需要命名,然后使用Intention创建相应的类:
然后,当我向FXML添加内容时,IDEA提供在控制器中创建相应的项目:
同样的fx:id
:
如果我使用重命名重构来改变 fx:id
它重命名Controller中相应的字段名称以匹配.因此,它不是编辑它,而是重新创建控制器来捕获名称更改,而只是让它们保持同步.但同样,关键是使用重命名重构而不仅仅是"手动"编辑fx:id
.
编辑以回答评论中的后续问题
首先是免责声明......我只涉足JavaFX,将简单的对话框作为命令行脚本的前端.因此,我绝不是专家,也可能不了解IDEA中与JavaFX相关的功能.但是我已经使用IDEA 14年了,并且通常知道在功能和"我如何"问题方面要寻找什么.
如果你对它有所了解,你能否说明在Scene Builder中使用这种东西?
每当我使用像Scene Builder这样的WYSIYWG编辑器时,我仍然会关注并清理它生成的代码.这样我还是有点老派.我相信IntelliJ IDEA坚持这一理念.
我发现很难相信IDEA无法在Scene Builder中进行"大规模自动更新"编辑
我可以告诉你,作为一个IDE,IDEA对于奇才或代码生成并不重要.相反,它本质上更"外科".它是"按意图编码"的理念是输入/编辑你的意图,然后使用意图/快速修复来实现这个意图.因此,它所做的任何代码生成都很小并且集中.但是......在某些情况下,您可以通过打开意图侧面菜单(使用右箭头→键)并选择"修复所有' 问题名称 '文件中的问题" 来要求它同时将意图应用于多个项目.再一次,鉴于我在JavaFx工作方面的经验有限,我可能没有意识到什么.但是,我没有看到任何类似的东西,我在帮助页面中没有看到任何内容.
当我在2003年第一次开始使用IDEA时,我也想知道我的旧IDE提供的所有向导和批量代码生成功能的位置.(我之前使用的是Forte for Java,它是NetBeans的前身.)起初我很想念它们.然后我开始使用意图和重构一切.几个月后,我没有错过巫师.再过几个月,我开始讨厌其他IDE中的向导.从长远来看,我使用意图和重构的效率要高得多.我注意到我不再花费大量时间处理编译问题和我在使用向导时所做的错误.肥皂盒>
如果我将fx:id分配给很多按钮等在Scene Builder中,我是否必须手动进入fxml文件的代码视图,找到所有的fx:id并为每个按钮添加alt +输入以获取他们进入控制器?
不幸的是,"创建字段"意图丢失ID"没有可用的批处理模式.所以你不能使用"全部修复"选项.我的教育猜测为什么不是在创建字段时你有机会选择的类型吧.例如,用fx:id
一个标签,我可能要键入的字段Label
,Labeled
,Control
等授予你很可能把它类型与实际类型它是在你FXML大多数情况下.因此,您可能想要打开一个功能请求,要求批处理模式可用于"创建字段"意图,该意图默认字段在FXML中使用的类型.但是,如果您习惯使用F2导航到下一个错误,然后使用Alt+ Enter(或⌥⏎)打开快速修复程序,您会发现可以非常快速地添加缺少的字段.
如果我也删除了一些fx:id,那么我必须记住它们是哪些,他们在控制器中手动删除它们?
同样,不要只是"手动"删除,而是fx:id
使用IDEA重构.删除fx:ids
(或任何内容)时使用"安全删除"重构.将光标放在id上(在FXML文件或Controller中),键入Alt+ Delete(或⌘⌦)以启动"安全删除".
如果没有用法,则删除该字段.否则你会收到警告:
单击"查看用法"按钮."查找"工具栏将打开,显示用法.
更新您的代码以删除其用法.使用"重新运行安全删除"按钮监控您的进度.完成所有使用后,点击"Do Refactor"按钮删除用法.虽然这似乎比某种重新生成控制器选项更复杂,但我的问题是这样的功能将如何处理控制器内方法中该字段的使用?它会不会重新创建字段,在我的控制器中留下编译错误?它如何"重新生成"我对控制器所做的所有定制?
安全删除还可以使您的代码无错误.如果我每次去删除一个东西时都有一块钱,我绝对知道它不会被用于任何地方,只是为了安全删除重构,弹出关于它被使用的地方的警告我完全忘了.