当前位置: 首页 > 知识库问答 >
问题:

IntelliJ,有没有可能像NetBeans那样“制作控制器”?

邰建业
2023-03-14

有IntelliJ和NetBeans经验的人是否知道,当右键单击相应的FXML文件时,IntelliJ是否具有与NetBeans“make controller”类似的特性?

我认为它是非常重要的,因为它更新了,如果我添加了一些新的东西(例如一个FXID),如果我删除了它等等--而且它自己也放在了正确的地方。

我知道,在Scene Builder中,您可以转到“查看->显示示例控制器骨架”,但这还不够自动化,尤其是在Jetbrains IDE中。

共有1个答案

黄骏喆
2023-03-14

IDEA不使用创建控制器的操作,而是使用意图(通过Alt+Enter)激活)。它的原理是在编辑FXML文件时保持控制器的同步,而不是重新创建它以使用更改来更新它。

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

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

它重命名控制器中相应的字段名以匹配。因此,它不是编辑它,然后重新创建控制器来捕获名称更改,而是简单地使它们保持同步。但是,关键是使用重命名重构,而不仅仅是“手动”编辑fx:id

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

如果你对它有所了解的话,你能在场景构建器中使用这种东西吗?

当我2003年第一次开始使用IDEA时,我也想知道我的旧IDE提供的所有向导和大量代码生成功能都在哪里。(我以前使用的是Forte for Java,它是NetBeans的前身。)一开始我很想念他们。然后我开始使用意图和重构的一切。几个月后,我没有错过奇才队。又过了几个月,我开始讨厌其他IDE中的巫师了。从长远来看,使用意图&重构,我的工作效率要高得多。我注意到我不再像使用向导时那样花大量时间处理编译问题和bug了。

如果我在Scene Builder中将fx:id分配给很多按钮,那么我是否必须手动进入fxml文件的code视图,找到所有的fx:id并为每一个设置Alt+Enter以将它们放入控制器?

不幸的是,对于缺少ID的“创建字段”意图来说,“没有可用的批处理模式”。所以您不能使用“全部修复”选项。对于为什么不这样做,我的猜测是,在创建字段时,您有机会为其选择类型。例如,对于标签的fx:id,我可能希望将字段键入为labellabelcontrol等。在大多数情况下,您很可能将其键入为FXML中的实际类型。因此,您可能希望打开一个特性请求,请求为“创建字段”意图提供一个批处理模式,该模式将字段默认为FXML中使用的类型。然而,如果您习惯使用F2导航到下一个错误,然后使用Alt+Enter(或)打开快速修复,您会发现可以非常快地添加缺少的字段。

如果我还删除了一些fx:id的,那么我必须记住它们是哪些,然后在控制器中手动删除它们?

同样,不是仅仅“手动”删除fx:id,而是使用IDEA重构。当删除fx:ids(或任何东西)时,请使用“安全删除”重构。将光标放在id上(在FXML文件或控制器中),键入Alt+Delete(或)以启动“安全删除”。

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

安全删除还保持代码不出错。如果我每次去删除一个我绝对知道不会在任何地方使用的东西,只会在安全删除重构时弹出一个关于它正在使用的地方的警告,而我完全忘记了。

 类似资料:
  • 我在JavaFX中创建了一个简单的应用程序。我添加了一个带有场景生成器的按钮和一个名为:Complete FXML文件的操作(完全简单且新生成) 当我在控制器中创建动作时,IntelliJ告诉我它从未被使用过。 看看我的Intellij中显示的控制器 以下是Controller类的完整代码: 在FXML文件中,我得到了一个警告,指出需要一个类或接口。()。 在fxml文件中,它以红色下划线 当我运

  • 我正在使用Flutter+Android Studio/Intellij Flutter插件。当我在IDE中运行我的应用程序时,似乎有一个空的控制台窗口,因此我无法从该窗口查看我的语句。 我能够查看tomcat日志中的输出,所以我不会被这个问题所阻碍。我的运行窗口没有输出/功能有什么原因吗? 更新

  • 我正在使用wedriveri o 4.5: 我需要等到某个元素存在,如果它不存在,处理这种情况。 例如: 但如果页面上不存在元素,webdriver会将我的测试标记为失败,并显示消息:“超时10000毫秒。”。尝试减少运行时间或增加测试规格的超时时间(http://webdriver.io/guide/testrunner/timeouts.html); 如果回复promise,确保其得到解决 >

  • 输出: 我真的不知道该说什么。这种精确的划分方式在过去一直对我有效。为什么在这种情况下不起作用?此外,和都不能正常工作,我已经尝试过了。

  • 作为一个长期的Eclipse超级用户,我完全沉迷于它在Java Browsing透视图中呈现的Smalltalk风格的包和类浏览器。Intellij有什么类似的吗? 注意:我不是在寻找Intellij的项目窗口;这更像是Eclipse的包资源管理器或项目资源管理器。

  • 问题内容: 有没有一种样式化HTML5范围控制的方法?是否可以更改滑块滑动的线条的颜色? 问题答案: 事实证明,webkit中有: 然后,您可以向每个选择器添加所需的任何属性。背景,渐变等… 希望有帮助!