IDEA开发JavaFX

一、JavaFX简介:

    JavaFX是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。

二、开发环境:

开发工具:IntelijIdea,我选用的版本号为:2020.3.2。

JDK:  openjdk-16 ,开发fx  jdk版本必须11及其以上,我这里用的是jdk16。

SDK:  javafx-sdk-16 , sdk我用的是JavaFx最新发行版 JavaFX16,最新版目前已经到17了。

开发方式:

1、纯IDEA开发JavaFX。

2、Maven方式开发JavaFX(这个实际项目用的多)。

3、还可以通过gradle方式开发JavaFx(这里暂不介绍)。

参考资料:https://openjfx.cn/openjfx-docs/JavaFX官网。

三、纯IDEA开发JavaFX:

1、从官网下载JavaFX SDK最新发布版,比如JavaFX Windows x64 SDK  Version 16,点击Download,将下载后的sdk解压到指定目录下,比如D盘,如下图:


2、新建一个JavaFX项目,为项目起1个名字,如JavaFxDemo1,如下图:

3、默认Idea无法识别JavaFx项目,需要分别为项目添加jdk和sdk:

转至File -> Project Structure -> Project,并将jdk设置为16,sdk选择X或者更高版本:

若电脑上没有jdk的话,可以通过Download Jdk下载最新版的jdk,比如:openjdk-16:

4、配置sdk,选择Libraries,点击+号,点击Java:

找到你刚才下载的sdk保存位置,比如:D:\javafx-sdk-16\lib,进行添加:

添加完lib之后,Libraries是这个样子的:

5、配置VM options:

    配置完jdk和sdk后,Idea是能识别JavaFX项目了,编译也不报错,可是运行时会提示找不到运行时环境,这个时候需要配置Configurations,添加虚拟机选项,这个是这种方式的关键(官网上虽然也是这么介绍搭建的,但是漏了一些细节):

点击Edit  Configurations后打开的界面默认是没有VM options这个选项的,如下图:

    先不急着配这个,先去配置一个可以在将来的项目中使用的全局变量,转至 Preferences (File -> Settings) -> Appearance & Behavior -> Path Variables,并将变量的名称定义为PATH_TO_FX,然后浏览至JavaFX SDK的lib文件夹以设置其值,然后单击Apply,如下图:

    然后再回到刚才配置VM options的地方,点击Edit  Configurations,刚才说了默认是没有VM options这个选项的,而这个是这种方式的关键。首先你需要点击右侧的 Modify options,在弹出的下拉菜单中找到Add VM options 如下图:

添加完之后,这时会发现比原先面板多出来1个VM options的输入框,可以在里面输入VM options的配置参数了:

    在VM options输入框中输入参数(官方推荐):--module-path ${PATH_TO_FX} --add-modules javafx.controls,javafx.fxml

    然后点击OK,这时候再去运行Main程序就不会再报错了,并且程序运行完毕,会弹出一个框,类似于swing那种,当然你可以自定义里面的内容,实现自己想要展示的效果:

6、项目目录结构:

    项目默认由3部分组成,首先是程序的启动类Main,用于加载布局文件,启动窗口,sample.fxml用于存放程序中用到的布局控件,Controller控制器,用于监听控件各种点击事件的,可自定义。如下图所示


四、Maven方式开发JavaFX:

1、首先新建项目,选择maven方式,勾上Create from archetype,如果尚未安装JavaFX原型,请选择Add archetype...并设置groupId(org.openjfx),artifactId(javafx-maven-archetypes)和版本(0.0.5),然后按OK。如下图:

等插件安装完成后记得选中该插件,然后再点击下一步,如下图:

为新建的项目添加1个名字,如:JavaFxDemo2:

    最关键的一步来了,采用这种方式的特别注意,在弹出的面板中,要修改archetypeArtifactIdd的值,将默认的javafx-maven-archetypes修改成javafx-archetype-fxml(使用FXML时),或者javafx-archetype-simple(不使用FXML时)如下图:

做完上一步操作后,您还应该声明其版本号,我这里用的JavaFX版本为16,如下图:

    点击OK,Finish后,等待maven去下载依赖。待maven依赖下载好后,pom.xml如下表所示:本项目用到的jdk和JavaFX版本号皆为16,JavaFX插件版本号为0.0.5,核心依赖是javafx.controls和javafx.fxml)

<project

xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>top.lyoun</groupId>

    <artifactId>JavaFxDemo2</artifactId>

    <version>1.0-SNAPSHOT</version>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven.compiler.source>16</maven.compiler.source>

        <maven.compiler.target>16</maven.compiler.target>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.openjfx</groupId>

            <artifactId>javafx-controls</artifactId>

            <version>16</version>

        </dependency>

        <dependency>

            <groupId>org.openjfx</groupId>

            <artifactId>javafx-fxml</artifactId>

            <version>16</version>

        </dependency>

    </dependencies>

    <build>

        <plugins>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <version>3.8.0</version>

                <configuration>

                    <release>11</release>

                </configuration>

            </plugin>

            <plugin>

                <groupId>org.openjfx</groupId>

                <artifactId>javafx-maven-plugin</artifactId>

                <version>0.0.5</version>

                <configuration>

                    <mainClass>top.lyoun.App</mainClass>

                </configuration>

            </plugin>

        </plugins>

    </build>

</project>


2、运行JavaFX程序:

    找到App程序启动类,运行App,程序运行成功之后,默认弹出如下界面,类似于swing,我们可以自定义里面的内容来展示:

3、项目目录结构:

    目录结构如下图所示,主要分为3大部分,分别是存放程序源代码的java目录,存放程序布局资源等的resources目录,和Maven依赖文件pom.xml。

    Java目录中存放称着启动类App和自定义的控制器Controller,该程序主要实现的就是在两个界面中来回跳转,响应了控件的点击事件,这里重点讲下module-info.java这个文件,这个java文件跟我们常看到的java类文件不同,你看他的文件名和类名并不相同,这个文件是用来做模块化开发的,你可以理解为是1个配置文件,用于将本程序用的到的所有modul,java程序,布局文件组合起来。由于FXML使用反射来访问模块中的控制器,因此已将其打开javafx.fxml。如下图所示:

requires即必要的,opens  to   打开...到....    exports  即输出到....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容