IntelliJ,是否可以像NetBeans一样“制作控制器”?

时间:2017-11-10 14:28:48

标签: java intellij-idea javafx netbeans jetbrains-ide

有没有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

[Menu in Netbeans, showing the "Make controller" feature]

Menu in IntelliJ, showing nothing about controllers

3 个答案:

答案 0 :(得分:5)

IDEA使用intentions(通过 Alt + 输入 <而不是创建控制器的操作KBD>⏎)。它的理念是在编辑FXML文件时保持控制器同步,而不是重新创建它以通过更改来更新它。

例如,当您创建FXML文件时,IDEA提供创建控制器: enter image description here

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

enter image description here

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

enter image description here

fx:id

类似

enter image description here

如果我使用重命名重构来更改fx:id

enter image description here

它重命名Controller中相应的字段名称以匹配。因此,它不是编辑它,而是重新创建控制器来捕获名称更改,而只是让它们保持同步。但同样,关键是要使用重命名重构而不仅仅是手动&#34;修改fx:id

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

首先是免责声明... 我只是在JavaFX中涉及将简单的对话框作为前端写入命令行脚本。因此,我绝不是专家,也可能不了解IDEA中与JavaFX相关的功能。但是我已经使用IDEA 14年了,通常知道要在功能方面寻找什么,以及&#34;我如何&#34;的问题。

  

如果你对它有所了解,你能否说明在Scene Builder中使用这种东西?

每当我使用像Scene Builder这样的WYSIYWG编辑器时,我仍然会密切关注并清理它生成的代码。我还是那么老派。我相信IntelliJ IDEA坚持这一理念。

  

我发现很难相信IDEA无法进行大规模自动更新&#34;在Scene Builder中进行的编辑

我可以告诉你,作为一个IDE,IDEA在奇才或代码生成方面并不重要。相反,它更多&#34;手术&#34;在自然界。它意图编码&#34;代码&#34;哲学是输入/编辑你的意图,然后使用意图/快速修复来实现这个意图。因此,它所做的任何代码生成都很小并且集中。 但是...... 在某些情况下,你可以通过打开意图侧面菜单(使用向右箭头键)并选择它来同时将意图应用于多个项目&#34;修复所有&#39; 问题名称&#39;文件中的问题&#34;。再一次,鉴于我在JavaFx工作方面的经验有限,我可能没有意识到什么。但是,我没有看到任何类似的事情,我在帮助页面中没有看到任何内容。

&LT;肥皂盒&GT; 当我在2003年第一次开始使用IDEA时,我也想知道我的旧IDE提供的所有向导和批量代码生成功能的位置。 (我之前使用的是Forte for Java,它是NetBeans的前身。)起初我很想念它们。然后我开始使用意图和重构一切。几个月后,我没有错过巫师。再过几个月,我开始讨厌其他IDE中的向导。从长远来看,我使用意图更加高效。重构。我注意到我不再花费大量时间处理编译问题和我在使用向导时所做的错误。 &LT; /肥皂盒&GT;

  

如果我在场景生成器中为很多按钮分配fx:id&#39,那么我是否必须手动进入fxml文件的代码视图,找到所有的fx:id&#39; s并为他们每个人alt +输入以使他们进入控制器?

不幸的是,&#34;创建字段&#34;遗失身份证的意图&#34;没有可用的批处理模式。所以你不能使用&#34;修复所有&#34;选项。我的有根据的猜测是,为什么不是在创建字段时,您有机会为其选择类型。例如,对于标签的fx:id,我可能希望将字段键入LabelLabeledControl等。在大多数情况下,您可能会输入它作为FXML中的实际类型。因此,您可能需要打开一个功能请求,要求批量模式可用于&#34;创建字段&#34;默认情况下,该字段用于FXML中使用的类型。不过,如果您习惯使用 F2 导航到下一个错误,然后使用 Alt + Enter (或⌥< / kbd> )打开快速修复程序,您会发现可以非常快速地添加缺少的字段。

  

如果我删除了一些fx:id&#39; s,那么我必须记住它们是哪些,他们会在控制器中手动删除它们?

再次,而不仅仅是&#34;手动&#34;删除fx:id,使用IDEA重构。删除fx:ids(或任何内容)时,请使用&#34;安全删除&#34;重构。将光标放在id上(在FXML文件或Controller中),键入 Alt + 删除(或 ⌦< / kbd>)启动&#34;安全删除&#34;。

enter image description here

如果没有用法,则删除该字段。否则你会收到警告:

enter image description here

点击&#34;查看用法&#34;按钮。 &#34;发现&#34;工具栏将打开显示用法。

enter image description here

更新您的代码以删除其用法。使用&#34;重新运行安全删除&#34;按钮来监控您的进度。完成所有使用后,点击&#34; Do Refactor&#34;按钮删除用法。虽然这似乎比某种重新生成控制器选项更复杂,但我的问题是这样的功能将如何处理控制器内方法中该字段的使用?它会不会重新创建字段,在我的控制器中留下编译错误?它将如何再生&#34;我对控制器进行的所有定制工作?

安全删除还可以避免代码错误。如果我每次去删除一个东西都有一块钱,我绝对知道它不会被用于任何地方,只是为了安全删除重构,弹出关于它被使用的地方的警告我完全忘了。

答案 1 :(得分:3)

如果你使用Javaru的解决方案,那么创建的字段将是公开的,没有@FXML注释。

要更改它,请转到: 档案|设置|编辑|代码风格| Java |代码生成|默认可见性 - 选择上报或私有,然后选中&#34;使用外部注释&#34;在底部。

第二个解决方案:在场景构建器中打开fxml文件,在窗口左下角的控制器部分设置控制器类。转到:查看|显示示例控制器框架和复制控制器类代码。

这是我的第一篇文章,希望我能帮到你。 :)

答案 2 :(得分:0)

我看不到创建方法或创建字段
我看到了这个enter image description here
enter image description here