如何将intellij中的普通java项目转换为JavaFx项目

我目前正在使用普通的java项目(gradle项目),并希望将其转换为JavaFx项目,而无需将现有源重新导入到新的Javafx项目中。 有没有办法实现这个目标?

没有什么可以转换的。

我不相信“正常”Java项目和JavaFX项目之间的理念存在任何差异。

当然,在Idea 12.x +中,有一个可用于创建新JavaFX项目的向导。 但我认为它所做的只是创建一个示例hello world应用程序 – 在初始创建之后,项目的工作方式与任何其他Java项目没有任何不同。

这应该是它应该如何,JavaFX只是Java。 Oracle不会在其分发中区分JavaFX和Java,也不应在其项目类型中区分IDE。

我相信,在这种情况下,即使我错了,我说得对,如果我错了也没关系。

更新

所以我错了很重要:-)

使用Idea 13.1.4,如果我使用File | New Project | Java创建一个新项目 File | New Project | Java File | New Project | Java ,有以下资源设置( File | Settings | Compiler ):

 ?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.dtd;?*.tld;?*.ftl 

也就是说,项目的资源只是设置为仅复制特定的文件类型。 因此,您可以通过为fxml和css添加资源复制支持来修改它以获取某些JavaFX项目中所需的其他文件类型; 即附加;?*.fxml;?*.css

有趣的是,如果使用File | New Project | JavaFX创建一个新项目 File | New Project | JavaFX File | New Project | JavaFX ,有以下资源设置:

 !?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj 

从本质上讲,它正在复制所有不是源文件,一种文件黑名单集而不是文件白名单集的其他项目创建模板所使用的内容。 真的很奇怪……无论如何,资源集是用户可配置的,所以你可以根据需要修改它们,一旦你这样做,你就不应该有任何问题(我相信,但我以前错了;-)

建议 – 将第三方构建工具与IDE结合使用

你可能最好将你的构建基于Gradle或Maven等第三方工具。 Idea使用这些外部构建工具(和其他工具)非常有效 。 使用第三方工具的优点是:

  1. 具有这些工具的项目遵循约定,其中资源放置在特定资源文件夹中,并且该文件夹中的所有内容都被视为要在构建输出中打包的资源。 因此,那里的混乱更少。
  2. 由此产生的项目更便于携带,并且更容易被其他可能不使用Idea的开发人员使用。
  3. 可以通过像Jenkins这样的持续集成构建系统轻松构建项目。
  4. Gradle和Maven都有JavaFX特定的插件,为打包JavaFX应用程序提供了额外的支持。

当然,使用第三方构建工具的缺点是学习它们的复杂性(以及许多怪癖),因为有时它们可​​能是相当野兽。 所以我认为这是一个权衡 – 小型,个人探索性项目不需要它们,您打算与他人分享的大型项目或项目可以从使用这些工具中受益。

一种解决方案是使用Scene Builder生成代码,然后将其集成到现有的IntelliJ项目中。 虽然应该可以将其作为模块导入,但您也可以简单地将代码移动到需要的位置(对包语句进行适当的更正等)。 如果您发现项目中未识别出javafx导入,请尝试以下解决方案:

首先,请按照本教程中的初始步骤确保您已为JavaFX设置IntelliJ。 注意:下面我提到1.8,但这应该适用于1.7+。 我推荐1.8+。

其次确保现有项目设置允许使用javaFX

  1. 打开项目结构
  2. 单击项目设置窗格下的项目
  3. 确保Project SDK为1.8+。

第三步确保为支持JavaFX的JDK配置模块

  1. 打开项目结构
  2. 单击项目设置窗格下的模块
  3. 确保使用的模块SDK支持javaFX,我再次使用JDK 1.8,但它应该适用于1.7。

此外,请注意,如果您有maven项目,则可能需要将fxml放在特定位置“/ main / resources /”。 看看这个。

这对我有用,我希望它对你有所帮助。

我按照这些步骤

  • 在现有的intellij项目中创建一个新模块(A)
  • 在别处创建一个新的JavaFx项目
  • 将来自JavaFx项目的代码,即Controller.java,Main.java and sample.fxml到src目录下的(A)项目中的模块中,如在A/user-interface/src

在此处输入图像描述

  • 你会在sample.fxml发现一个错误,因为它引用了控制器类作为sample.Controller将它改为’Controller’。 它以这种方式工作(因为我删除了sample包文件夹

修复sample.fxml

  • 在(A)中打开设置菜单File | Project Structure | Modules File | Project Structure | Modules
  • 从设置窗口左侧的列表中选择user-interface模块
  • 切换到dependencies选项卡
  • 使用右侧的绿色+标记将旧的非gui模块添加为模块依赖项
  • 现在你可以使用非gui模块中的类,享受吧!

注意:你可以跳过添加模块的依赖关系,让intellij为你做,只需在旧模块中键入一个类的名称, alt+enter (灯泡魔术) – > add module depenency

模块依赖窗口

请记住,您的源文件夹必须正确设置。 看截图来了解我的意思..

在此处输入图像描述