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

时间:2014-05-02 05:24:27

标签: java user-interface intellij-idea javafx-2

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

5 个答案:

答案 0 :(得分:12)

没有什么可以转换的。

我认为“普通”Java项目和JavaFX项目之间的理念没有任何区别。

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

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

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

<强>更新

所以我错了很重要: - )

使用Idea 13.1.4,如果我使用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创建新项目,则有以下资源设置:

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

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

建议 - 将第三方构建工具与IDE配合使用

你最好不要使用第三方工具(如Gradle或Maven)。 Idea适用于这些外部构建工具(和其他)。使用第三方工具的优点是:

  1. 使用这些工具的项目遵循约定,其中资源放置在特定资源文件夹中,并且该文件夹中的所有内容都被视为要在构建输出中打包的资源。因此,那里的混乱更少。
  2. 由此产生的项目更易于使用,并且更容易被其他未使用Idea的开发人员使用。
  3. 可以通过像Jenkins这样的持续集成构建系统轻松构建项目。
  4. Gradle和Maven都有特定于JavaFX的插件,为打包JavaFX应用程序提供了额外的支持。
  5. 当然,使用第三方构建工具的缺点是学习它们的复杂性(以及许多怪癖),因为有时它们可​​能是相当野兽。因此,我认为这是一个权衡 - 小型的个人探索性项目不需要它们,您打算与其他人分享的大型项目或项目将从使用此类工具中获益。

答案 1 :(得分:1)

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

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

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

  1. 打开项目结构
  2. 单击项目设置窗格下的项目
  3. 确保Project SDK为1.8+。
  4. 第三步确保为支持JavaFX的JDK配置模块

    1. 打开项目结构
    2. 单击项目设置窗格下的模块
    3. 确保使用的模块SDK支持javaFX,我再次使用JDK 1.8,但它应该适用于1.7。
    4. 另外,请注意,如果您有maven项目,则可能需要将fxml放在特定位置,&#34; / main / resources /&#34;。看看this.

      这对我有用,我希望它可以帮到你。

答案 2 :(得分:1)

我遵循了这些步骤

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

enter image description here

  • 您在sample.fxml中发现错误,因为它引用了控制器类,sample.Controller将其更改为&#39; Controller&#39;只要。它以这种方式工作(因为我删除了sample包文件夹

Fixing sample.fxml

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

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

Module dependency window

答案 3 :(得分:0)

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

enter image description here

答案 4 :(得分:0)

因此,经过大量的搜索后,我终于自己发现了它!

如果您可以在Intellijd中创建新的Javafx项目,并且效果很好,但是当您打开碰巧使用javafx的普通Java应用程序无法正常工作时,(因为Java只是不想解析javafx引用)< / p>

这对我有用: 您必须将//= require jquery2 // require jquery_ujs # Removed this by taking away '=' //= require rails-ujs 文件添加到Windows计算机上IDEA内的模块类路径中,即"jre/lib/ext/jfxrt.jar"

而现在它终于建立!