JavaFX入门(一)我的第一个JavaFX程序
2026/6/11 5:24:51 网站建设 项目流程

一、JavaFX简介

JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和Java一样跨平台。

JavaFX发展历史

2008年12月05日,Sun微系统公司正式发布了基于Java语言的平台JavaFX 1.0。因为当时富互联网应用(RIA,Rich Internet Application)正火,具有代表性的有:Adobe公司的Flex,微软的Silverlight和Oracle的JavaFX,还有HTML5+CSS3+JavaScript组合。

JavaFX 1.0的时候开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。

从JDK 7u6开始,JavaFX被内置到Java SE中,原来如果要开发JavaFX程序,需要单独下载JavaFX的SDK,但是现在不需要了。从Java 8开始,JavaFX的版本也更新为JavaFX 8。


二、环境准备

1. 开发环境要求

  • JDK 8+:JavaFX从JDK 8开始内置,无需额外安装
  • IDE:推荐使用IntelliJ IDEA或Eclipse(需安装e(fx)clipse插件)
  • 构建工具:Maven或Gradle(可选)

2. 创建Maven工程

在IntelliJ IDEA中创建Maven工程,项目结构如下:

pom.xml中添加JavaFX依赖:

<dependencies><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>18.0.1</version></dependency><dependency><groupId>org.openjfx</groupId><artifactId>javafx-fxml</artifactId><version>18.0.1</version></dependency></dependencies>

三、HelloWorld程序

1. 程序结构

一个最基本的JavaFX程序包含以下核心组件:

组件说明
Application程序的入口基类
Stage顶层窗口容器
Scene场景,包含所有内容
Node场景中的各种UI元素

Stage与Scene的关系如下图所示:

2. 代码实现

创建HelloJavaFX.java

packagecn.tzy;importjavafx.application.Application;importjavafx.scene.Scene;importjavafx.scene.control.Label;importjavafx.scene.layout.StackPane;importjavafx.stage.Stage;publicclassHelloJavaFXextendsApplication{@Overridepublicvoidstart(StageprimaryStage){// 创建一个Label控件Labellabel=newLabel("Hello, JavaFX!");// 创建一个布局容器,将Label放入其中StackPaneroot=newStackPane();root.getChildren().add(label);// 创建场景,设置宽高Scenescene=newScene(root,400,300);// 设置窗口标题primaryStage.setTitle("我的第一个JavaFX程序");primaryStage.setScene(scene);primaryStage.show();}publicstaticvoidmain(String[]args){launch(args);}}

3. 代码解析

(1)继承Application类

每个JavaFX应用程序的主类都需要继承javafx.application.Application类,并重写start()方法。start()方法是所有JavaFX应用程序的入口点。

(2)Stage和Scene

  • Stage:相当于一个窗口,是JavaFX应用程序的顶层容器
  • Scene:场景,包含所有的UI内容,需要设置到Stage上

(3)布局容器

StackPane是一种布局容器,它会将子节点堆叠在一起并居中显示。JavaFX提供了多种布局容器:

  • BorderPane:边界布局
  • HBox/VBox:水平/垂直盒子布局
  • GridPane:网格布局
  • FlowPane:流式布局

(4)launch()方法

main()方法中调用launch(args)来启动JavaFX应用程序,它会自动调用start()方法。


四、运行效果

编译并运行程序后,会弹出一个窗口:

窗口大小为400x300像素,Label文本居中显示。也可以添加按钮等更多控件:


五、使用FXML分离界面与逻辑

在实际开发中,我们通常使用FXML文件来描述界面布局,将UI设计与业务逻辑分离。

1. 创建FXML文件

创建hello.fxml

<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.control.Button?><?import javafx.scene.control.Label?><?import javafx.scene.layout.VBox?><VBoxxmlns="http://javafx.com/javafx/8.0.112"xmlns:fx="http://javafx.com/fxml/1"fx:controller="cn.tzy.HelloController"alignment="CENTER"spacing="10"><Labeltext="Hello, JavaFX with FXML!"/><Buttontext="Click Me"onAction="#handleButtonClick"/></VBox>

2. 使用Scene Builder可视化编辑

FXML文件可以通过JavaFX Scene Builder进行可视化拖拽编辑:

3. 创建Controller类

创建HelloController.java

packagecn.tzy;importjavafx.fxml.FXML;importjavafx.scene.control.Button;importjavafx.event.ActionEvent;publicclassHelloController{@FXMLprivateButtonbutton;@FXMLpublicvoidhandleButtonClick(ActionEventevent){Buttonbtn=(Button)event.getSource();btn.setText("I am clicked!");}}

4. 修改主程序

packagecn.tzy;importjavafx.application.Application;importjavafx.fxml.FXMLLoader;importjavafx.scene.Parent;importjavafx.scene.Scene;importjavafx.stage.Stage;publicclassMainAppextendsApplication{@Overridepublicvoidstart(StageprimaryStage)throwsException{Parentroot=FXMLLoader.load(getClass().getResource("/hello.fxml"));Scenescene=newScene(root,400,300);primaryStage.setTitle("JavaFX FXML示例");primaryStage.setScene(scene);primaryStage.show();}publicstaticvoidmain(String[]args){launch(args);}}

六、添加CSS样式

JavaFX支持使用CSS来美化界面,创建application.css

.root{-fx-font-size:14px;-fx-font-family:"Helvetica, Arial, sans-serif";-fx-background-color:#f0f0f0;}.button{-fx-background-color:#4CAF50;-fx-text-fill:white;-fx-padding:10px 20px;}.button:hover{-fx-background-color:#45a049;}

在代码中引入CSS:

scene.getStylesheets().add(getClass().getResource("/application.css").toExternalForm());

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询