1、官网
JavaFX中文官方网站、Oracle官方文档
2、教程
JavaFX中文基础教程视频合集
 JavaFX实战教程
3、VSCode/Eclipse
VSCode(写HelloWorld用)、VSCode的Java扩展
Eclipse,跳至第9段
4、Liberica JDK安装
Liberica JDK官网下载
 依次选择,All versions,Java 17 (LTS),Release Version选一个最新的,Windows,x86,64 bit,Full JDK
 (必须是Full JDK这个版本的,因为这个版本才自带JavaFX)
 点击下载MSI格式
5、手打HelloWorld代码
新建一个文件夹Hello,在文件夹内新建文件Hello.java,内容如下
 (既然是HelloWorld,用记事本或者VSCode打开文件夹就行了)
public class Hello {
	public static void main(String[] args) {
		System.out.printf("hello world");
	}
}
6、运行HelloWorld
javac .\Hello.java;java Hello
 
7、修改代码,加入javafx
- Hello继承- javafx.application.Application
 所以先导入,然后- extends Application- import javafx.application.Application; public class Hello extends Application{ public static void main(String[] args) { System.out.printf("hello world"); } }
- 此时VSCode会将Hello类标红,并提示你需要写一个start方法
  
- 点击快速修复…(Ctrl+,),点击Add unimplemented methods,自动生成start函数,自动导入javafx.stage.Stage
 (手写也不是不行其实)
  
- 删除这两行
 改为// TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'start'");primaryStage.show();
- 用不着抛异常,所以删除字符串throws Exception
  
- 调用 javafx 中的 launch(启动 JavaFX 应用程序的入口点)
 改为public static void main(String[] args) { System.out.printf("hello world"); }public static void main(String[] args) { launch(args); }
- 快捷键Shift+Alt+F格式化代码,最终代码
  
8、运行
javac .\Hello.java;java Hello
 运行效果,显示一个什么也没有的窗口
 
9、下载IDEA
访问IDEA官网下载地址下载 IntelliJ IDEA 的 Community Edition 版本
 勾选用户协议点击Continue,数据分享点击Dont't Send
10、设置IDEA
左侧栏,Customize,All settings…
代码提示快捷键:Keymap,MainMenu,Code,Code Completion
 右键Cyclic Expand Word,Remove Alt+/
 右键Basic,Remove Ctrl+空格
 右键Basic,Add Keyboard Shortcut,按下Alt+/,点击OK
 点击Apply
UTF-8编码:Editor,File Encodings
 Global Encoding和Project Encoding都选择UTF-8,点击Apply
自动导入:Editor,General,Auto Import
 勾选Add unambiguous imports on the fly和Optimize imports on the fly,点击Apply
大小写模糊匹配:Editor,General,Code Completion
 取消Match case(没人会记得代码叫Length/length/Size/size/len/Len/getlen/strlen,还匹配大小写呢,给自己的人生增加难度,生怕找到这个方法是吧)
 点击Apply
关闭自动更新:Appearance & Behavior,System Settings,Updates
 取消勾选Check IDE updates for、Check for plugin updates,点击Apply
打开超多文件时不隐藏:Editor,General,Editor Tabs
 取消勾选Show tabs in one row,点击Apply
显示方法分割线:Editor,General,Appearance
 勾选Show method separators,点击Apply
自动缩进注释位置:Editor,Code Style,Java,Arrangement右边,Code Generation(将窗口全屏,设置被折叠了)
 取消勾选Line comment at first column,点击Apply
 自动缩进注释位置HTML:HTML中的Code Generation
 取消勾选Line comment at first column和Block comment at first column,点击Apply
自动编译:Build, Execution, Deployment,Compiler
 勾选Build project automatically,点击Apply
10、新建项目
点击New Project
 Name输入hijavafx
 点击Create
 等待加载
 等待右下角更新索引
 如果出现下载预建索引提示,点击Always download即可
 
11、运行项目
右上角,点击绿色三角形图标(Shift+F10),运行,底部控制台将显示运行结果
 (i到5的循环是IDEA自带的)
 
12、格式化代码IDEA
Ctrl+Alt+L格式化代码
13、添加javafx代码
public class Main
改为
public class Main extends Application
IDEA将自动添加import语句
 IDEA将public class Main extends Application标红并提示需要写一个start方法
 点击Implement methods(Alt+Shift+Enter),保持默认实现设置,点击OK自动添加
 
 删除prinf语句和for循环,删除字符串throws Exception,删除自动生成的注释
 main函数中添加launch(args);
 start函数中添加primaryStage.show();
 最终代码如下
import javafx.application.Application;
import javafx.stage.Stage;
public class Main extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) {
        primaryStage.show();
    }
}
运行,成功显示空白窗口
14、添加窗口标题
在start中使用setTitle方法添加窗口标题
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("hiJavaFX");
        primaryStage.show();
    }
15、添加窗口图标
15.1 准备图片
准备一张图片
 
15.2 在IDEA中导入图片
右键文件夹src,New,Directory,命名为resources
 右键resources,New,Directory,命名为images
 复制图片文件,选中images,Ctrl+V粘贴,图片文件命名为icon.png,点击OK
15.3 复制图片路径
右键resources下的images下的icon.png,Copy Path/Reference…,选择Path From Content Root
15.4 编写代码
在start中使用getIcons方法添加窗口图标
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("hiJavaFX");
        String IconUrl = this.getClass().getResource("/resources/images/icon.png").toString();
        primaryStage.getIcons().add(new Image(IconUrl));
        primaryStage.show();
    }
16、设置窗口尺寸
在start中使用setWidth方法和setHeight方法设置窗口尺寸
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("hiJavaFX");
        String IconUrl = this.getClass().getResource("/resources/images/icon.png").toString();
        primaryStage.getIcons().add(new Image(IconUrl));
        primaryStage.setWidth(400);
        primaryStage.setHeight(300);
        primaryStage.show();
    }
17、禁止修改窗口尺寸
在start中使用setResizable方法向其传入false,禁止修改窗口尺寸
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("hiJavaFX");
        String IconUrl = this.getClass().getResource("/resources/images/icon.png").toString();
        primaryStage.getIcons().add(new Image(IconUrl));
        primaryStage.setWidth(800);
        primaryStage.setHeight(300);
        primaryStage.setResizable(false);
        primaryStage.show();
    }
18、加载一张背景图片
18.1 准备图片

18.2 在IDEA中导入图片
复制图片文件,选中images,Ctrl+V粘贴,图片文件命名为background.png,点击OK
18.3 写代码
primaryStage里加载一个Scene,Scene里加载一个Pane,使用Pane的setBackground方法设置背景图片
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("hiJavaFX");
        String IconUrl = this.getClass().getResource("/resources/images/icon.png").toString();
        primaryStage.getIcons().add(new Image(IconUrl));
        primaryStage.setWidth(800);
        primaryStage.setHeight(300);
        primaryStage.setResizable(false);
        
        Pane root = new Pane();
        String BackgroundImageUrl = this.getClass().getResource("/resources/images/background.png").toString();
        BackgroundImage backgroundImage = new BackgroundImage(
                new Image(BackgroundImageUrl),
                null,
                null,
                null,
                new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, false, false, true, true)
        );
        root.setBackground(new Background(backgroundImage));
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        
        primaryStage.show();
    }
19、显示文字
添加两个label,显示文字
    @Override
    public void start(Stage primaryStage) {
        // 省略
        root.setBackground(new Background(backgroundImage));
        Label label = new Label("JavaFX");
        label.setStyle("-fx-font-size: 45px; -fx-text-fill: black;");
        label.setLayoutX(315);
        label.setLayoutY(26);
        root.getChildren().add(label);
        Label label2 = new Label("  JavaFX是一个开源的下一代客户端应用平台,适用于基于\n" +
                "Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公\n" +
                "司的共同努力的成果,目的是为开发丰富的客户端应用提供\n" +
                "一个现代、高效、功能齐全的工具包。");
        label2.setStyle("-fx-font-size: 27px; -fx-text-fill: black;");
        label2.setLayoutX(28);
        label2.setLayoutY(101);
        root.getChildren().add(label2);
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
20、换一张无字背景图
导入这张图,命名为background2.png
 
String BackgroundImageUrl = this.getClass().getResource("/resources/images/background.png").toString();
改为
String BackgroundImageUrl = this.getClass().getResource("/resources/images/background2.png").toString();
21、最终效果

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import java.io.File;
public class Main extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("hiJavaFX");
        String IconUrl = this.getClass().getResource("/resources/images/icon.png").toString();
        primaryStage.getIcons().add(new Image(IconUrl));
        primaryStage.setWidth(800);
        primaryStage.setHeight(300);
        primaryStage.setResizable(false);
        Pane root = new Pane();
        String BackgroundImageUrl = this.getClass().getResource("/resources/images/background2.png").toString();
        BackgroundImage backgroundImage = new BackgroundImage(
                new Image(BackgroundImageUrl),
                null,
                null,
                null,
                new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO,
                        false, false, true, true)
        );
        root.setBackground(new Background(backgroundImage));
        Label label = new Label("JavaFX");
        label.setStyle("-fx-font-size: 45px; -fx-text-fill: black;");
        label.setLayoutX(315);
        label.setLayoutY(26);
        root.getChildren().add(label);
        Label label2 = new Label("  JavaFX是一个开源的下一代客户端应用平台,适用于基于\n" +
                "Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公\n" +
                "司的共同努力的成果,目的是为开发丰富的客户端应用提供\n" +
                "一个现代、高效、功能齐全的工具包。");
        label2.setStyle("-fx-font-size: 27px; -fx-text-fill: black;");
        label2.setLayoutX(28);
        label2.setLayoutY(101);
        root.getChildren().add(label2);
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
22、打包jar
(打包之前清理一下图片,使用了background2.png但是没用background.png,那么就可以删除background.png再打包)
 IDEA,菜单栏,File,ProjectStructure…(Ctrl+Alt+Shift+S),Artifacts
 (右侧如果有内容则点击-清空)
 点击+,JAR > From modules with dependencies…,
 
 选择Main Class,(其他网上教程说要修改META-INF的目录,可是IDEA已经改好了,就是以src结尾的,不用改了)
 点击OK,点击OK
 
 你以为下一步是点击+,添加图片目录?错,直接点击OK
 
 菜单栏,Build,Build Artifact,Build
 
 打包位置:IdeaProjects\hijavafx\out\artifacts\hijavafx_jar\hijavafx.jar
 打包后和打包前效果一致,图片显示正常(jar文件大小56KB,bankground2.png30多KB,icon.png20多KB,正好对应上)
23、打包EXE(exe4j)(自带jre)
23.1 告知exe可执行文件,去固定位置找jre
模仿第24步,重点在exe4j的第6步,配置JRE的步骤
 Minimum version和Maximum version都输入17
展开高级选项,点击Search sequence
 清空自带的设置项(你总不能指望别人安装的jre恰好还自带javafx吧)
点击绿色加号,类型设置为Directory,Directory手动输入.\jre,点击确定
 
 点击下一步
 Choose the preferred VM使用默认设置,点击下一步
 其余操作继续参考第23步生成exe文件
23.2 只是告知exe去固定位置找jre是没用的,你得真的给他一个jre
参考步骤4下载一份JRE
 此时Package Type选择Full JRE,用不着Full JDK
 下载ZIP格式的
解压后的文件夹改名为jre,并放置到exe4jfolder文件夹
 路径举例:exe4jfolder\hijavafx.exe
 路径举例:exe4jfolder\jre\bin\client\jvm.dll
清理exe4jfolder文件夹,只保留hijavafx.exe和解压的jre文件夹
 双击exe可以运行
 (嫌jre文件夹太大的可以自行精简jre)
24、打包EXE(exe4j)(需要jre)
24.0 注册exe4j
去搜索引擎搜索exe4j的密钥\注册码,此处省略
24.1 新建文件夹
新建文件夹,命名为exe4jfolder,用于放置打包exe的所需文件
24.2 复制jar包
将IdeaProjects\hijavafx\out\artifacts\hijavafx_jar\hijavafx.jar复制一份放置到exe4jfolder文件夹
24.2 准备一个ico图标
下载greenfish,用项目中的icon.png生成一个icon.ico放置到exe4jfolder文件夹
24.3 下载安装exe4j
exe4j下载地址
24.4 使用exe4j将jar打包成exe
打开exe4j,点击下一步跳过欢迎界面,每完成一步都点击下一步按钮(exe4j只认下一步按钮,老老实实按就行了)
 2. Proect type:"JAR in EXE" mode
 3. Application info:
 Short name of your application:hijavafx
 Output directory:选择exe4jfolder文件夹
 4. Executable info:
 Executable type:已经选择了GUI application,所以不用动
 Executable name:hijavafx
 勾选Icon File,并选择exe4jfolder文件夹中的icon.ico文件
 5. Java invocation:
 点击绿色加号,Archive选项选择exe4jfolder文件夹中的hijavafx.jar文件
 
 Main class from Class path:选择Main,确定
 6. JRE:
 Minimum version:17
 Maximum version:17
 7. Splash screen:点击下一步按钮跳过
 8. Message:点击下一步
 到第9步时,软件将运行,并提示exe4j has finished
 点击Exit退出软件
 生成位置:exe4jfolder\hijavafx.exe
24.5 运行
运行时会提示该软件由exe4j生成,这是因为这个软件是付费软件
 
 在新电脑上会找不到JRE。
 ???还得装JRE你打的什么包?会装jre我用你说???
 
25、打包EXE(launch4j)(自带jre)
访问保存在sourceforge上的launch4j,下载launch4j
 新建文件夹launch4jfolder,里面放hijavafx.jar,icon.ico和一份Liberica的jre
 
 设置截图中的Output file、Jar和Icon三项
 
 删除默认值
 
 改为./jre,并填写搜索版本(这软件死脑筋,一个填17.0.7,另一个必须得17.0.6或者其他小一号的版本)
 
 点击齿轮图标保存一个xml格式的配置文件到launch4jfolder文件夹后自动生成exe
 
 生成完毕
 
 
 运行报错(说明确实是找到了jre位置了),点确定当没看见就行了,软件成功运行
 
29、(放弃)下载Eclipse安装器
2023‑03版本
- 南京大学镜像站下载eclipse-inst-jre-win64.exe
- 清华大学镜像站下载eclipse-inst-jre-win64.exe
- 中国科学技术大学镜像站下载eclipse-java-2023-03-R-win32-x86_64.zip(这个是Eclipse本体)
- 访问Eclipse官网,直接点击下载
- 访问历史版本下载其他版本,例如2020-12版本
30、(放弃)运行Eclipse安装器,安装Eclipse
打开eclipseinstaller by Oomph
 点击第一项Eclipse IDE for Java Developers
 自动生成JDK路径和安装目录设置,可以不用改动
 直接点击INSTALL安装
 将会弹出用户协议,点击Accept Now
 安装完毕后关闭eclipseinstaller by Oomph
31、(放弃)配置Eclipse
开始菜单找到并打开Eclipse IDE for Java Developers - 2023-03
 Workspace可以设置为其他目录,点击Launch
31.1 设置中文
访问语言包下载地址
 菜单栏,Help,Install New Software…
 点击Add
南京大学镜像:https://mirrors.nju.edu.cn/eclipse/technology/babel/update-site/latest/
 清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/babel/update-site/latest/
 中国科学技术大学镜像:https://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/latest/
选择一个链接填到Location里
 点击Add,Pending等待加载
 列表向下滑找到并勾选Babel Language Packs in Chinese (Simplified)
 取消勾选Contact all update sites during install to find required software
 点击Next >,点击Next >
 勾选I accept the terms of the license agreement
 点击Finish
 等待安装
 弹出Trust界面,点击Select All,然后点击Trust Selected
 安装完成后点击Restart Now,Eclipse将重启
31.2 设置UTF-8
Eclipse,菜单栏,窗口(W),首选项(P),常规,工作空间,文本文件编码(T),其他(O):,设置为UTF-8
31.3 自动提示
Eclipse,菜单栏,窗口(W),首选项(P),Java,编辑器,内容辅助,自动激活
 Java的自动激活触发器(J),设置为.qwertyuiopasdfghjklzxcvbnm
 点击应用并关闭按钮
31.4 添加JRE
Eclipse,菜单栏,窗口(W),首选项(P),Java,已安装的 JRE,
 移出缺省值,就算是LibericaJDK,那也得删除
 点击添加(A)…,点击下一步(N) >
 点击目录(O)…,
32、(放弃)Eclipse
32.0、新建项目
Eclipse,菜单栏,文件(F),新建(N)(Alt+Shift+N),Java 项目
 项目名(P),输入hijavafx1
 勾选Use default JRE 'LibericaJDK-17-Full' and workspace compiler preferences
 直接点击完成(F)
32.1、新建包
左侧,包资源管理器,右键hijavafx1,新建(W),包
 名称(M),改为pers.siqiao.hijavafx.lifecycle
 点击完成(F)
32.2、新建类
右键pers.siqiao.hijavafx.lifecycle,新建(W),类
 名称(M),输入Main
 勾选public static void main(String[] args) 想要创建哪些方法存根(占位代码)?
 点击完成(F)
32.3、main方法
main方法内,输入sysout的一部分syso,快捷键Alt+/显示模板建议
 回车选择sysout - 打印到标准输出
 输出这句话System.out.println("hijavafx");
 
32.4 运行
上方,工具栏,第7项,点击绿色圆底白色三角形图标运行
 
 菜单栏,运行(R),运行(R)(Ctrl+F11)
下方控制台显示输出
 
32.5 代码格式化
菜单栏,源码(S),格式化(F)(Ctrl+Shift+F)
32.6 继承
public class Main
改为
public class Main extends Application
Eclipse自动添加import语句
 
 Application居然被标红,说明Eclipse表面上import,其实根本不认识javafx.application.Application
 Eclipse 真绝了,越活越回旋,你快都不如 VSCode 了你都
 Application cannot be resolved to a type
 The type javafx.application.Application is not accessible
 
 
 










![[单片机框架][bsp层][cx32l003][bsp_tim] Baes TIM 基础定时器配置和使用](https://img-blog.csdnimg.cn/fccd00d3889c430a8f51b7e6e34b49f5.png)









