版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026/8/23
*1第9章JavaFX简介第2页JavaFX是Oracle推出的用于构建富客户端应用的框架,作为AWT/Swing的继任者,它在设计理念、功能特性和开发方式上都有显著革新。以下从基础知识点和与传统JavaGUI包的差异两方面详细介绍.
本章学习要点2026/8/23
*39.1JavaFXSDK的配置第4页不同于使用AWT/Swing库,有了JavaFX库,但仍然需要必要的JavaFX运行时配置才能正确地运行JavaFX的图形用户界面程序。如果开发环境中没有正确配置JavaFX,就会导致编译器找不到JavaFX相关的类和包。这是JavaFX开发中非常常见的问题,尤其是在Java11及以上版本中,因为JavaFX已从JDK中分离出来,需要单独配置,即要正确设置VM(虚拟机)参数来指定JavaFX模块9.1JavaFXSDK的配置设置的步骤为:下载JavaFXSDK并解压(下面下载的是javafx-sdk-24.0.2)。在IDE中(以IntelliJIDEA为例):打开项目结构(File>ProjectStructure)选择Libraries>+>Java导航到JavaFXSDK的lib目录并添加(如D:\javafx-sdk-24.0.2\lib),选中该目录后点击
OK。9.1JavaFXSDK的配置打开IDEA"Run>EditConfigurations"(或通过运行按钮旁的下拉框选择)。在弹出的“ChooseModules”窗口中,勾选当前项目模块(如ControlApp),点击
OK
→最后点击
Apply
保存。添加后,在Libraries列表中会显示javafx-sdk-24.0.2/lib,展开可看到javafx.base.jar等文件,说明库已关联成功。9.1JavaFXSDK的配置程序配置在左侧列表中,找到要运行的JavaFX主类对应的配置(通常以类名命名,如HelloApp)。如果没有配置,点击左上角的
+
号,选择
Application,手动创建一个,然后在
Mainclass
中选择所使用的主类(如HelloApp)。显示VMoptions输入框在配置窗口的右侧,找到
Modifyoptions
按钮(通常在窗口上方,蓝色文字),点击它。在弹出的菜单中,勾选
AddVMoptions(如果已勾选则忽略)。勾选后,窗口中会出现一个
VMoptions
文本框(通常在
Programarguments
上方)。9.1JavaFXSDK的配置以上各步骤的参数含义为:1.--module-path"D:\javafx-sdk-24.0.2\lib"告诉JVM关于JavaFXSDK的lib目录位置(替换为实际的JavaFX安装路径)。必须使用双引号包裹整个路径(尤其是路径中包含空格时)。2.--add-modulesjavafx.controls,javafx.graphics指定需要加载的JavaFX模块,如javafx.controls:包含按钮、标签等UI组件。javafx.graphics:包含窗口、场景等基础绘图功能。3.--enable-native-access=ALL-UNNAMED允许未命名模块(如IDEA的运行时组件)调用系统原生方法,消除警告。第9页9.2JavaFX核心架构与组件体系在JavaUI编程的语境中,Scene(场景)是JavaFX(Java主流的UI编程框架)中一个核心概念。场景图是一种树形数据结构,用于排列(和分组)图形对象,以便更易于进行图形界面的表示。它还允许图形引擎通过完全或部分跳过在最终界面中不会显示的对象,以最高效的方式渲染对象。图9.1展示了JavaFX场景图架构的一个示例。第10页9.2JavaFX核心架构与组件体系2026/8/23
*119.2JavaFX核心架构与组件体系第12页9.2JavaFX核心架构与组件体系在架构的最顶层是一个舞台(Stage)。Stage是JavaFX应用的顶级容器,对应操作系统的窗口,一个应用程序至少有一个主Stage,它可设置标题、大小、位置、样式(如无边框、模态窗口)等。Scene(场景)
是窗口内的“画布”,所有按钮、文本、图片等UI组件都必须放在Scene中才能显示。在任何给定的时间,一个Stage(舞台)可以有一个Scene(场景)与其关联。一个Stage一次只能显示一个Scene,但可动态切换。Scene包含一个根节点(RootNode),所有UI元素都依附于根节点而形成树形结构。第13页9.2JavaFX核心架构与组件体系UI组件(如Label、Button、StackPane等)则是场景上的“内容”。Node(节点)是所有UI元素的基类,这些UI元素从功能属性上分为两类:可视节点:如按钮(Button)、文本框(TextField)、标签(Label)、图像(ImageView)等,具有尺寸、位置、样式等属性。容器节点:如VBox(垂直布局)、HBox(水平布局)、BorderPane(边界布局)、GridPane(网格布局)等,用于组织其他节点的布局。第14页9.2JavaFX核心架构与组件体系JavaFX场景图中的所有元素都表示为节点(Node)对象。从逻辑结构上节点又分为三种类型:根节点、分支节点和叶节点。根节点是唯一没有父节点的节点,它直接由场景包含,如上图9.1所示。分支节点和叶节点的区别在于叶节点没有子节点。在场景图中,父节点的许多属性会被子节点共享。例如,对父节点应用的变换或事件也会递归地应用于其子节点。因此,复杂的节点层次结构可以被视为一个单一的节点,从而简化编程模型。第15页9.2JavaFX核心架构与组件体系图9.2展示了“HelloWorld”程序场景图的一个示例例9.1“HelloWorld”场景图一种可能的实现方式第16页9.2.1Application类javafx.application.Application
是JavaFX应用程序的基类,所有JavaFX应用都必须通过继承这个类来创建,它是JavaFX程序的入口点和生命周期管理者。JavaFX具有如下主要作用与特性。1.程序入口JavaFX应用不直接通过
main
方法启动(虽然仍需
main
方法作为兼容入口),而是通过
Application
类的生命周期方法启动。标准写法是在
main
中调用
launch(args),该方法会自动初始化JavaFX运行时,并触发
Application
的生命周期。第17页9.2.1Application类2.生命周期管理Application类定义了三个核心生命周期方法,开发者可重写这些方法控制程序流程:init():初始化方法,在应用启动前调用(仅执行一次),用于加载资源、初始化数据等,不能在此方法中操作JavaFX组件(因为此时JavaFX线程尚未启动)。start(StageprimaryStage):核心方法,JavaFX线程启动后调用。此方法必须重写,用于创建UI组件(如
Scene、Button
等),并通过参数
primaryStage(主舞台)展示界面。stop():应用关闭时调用,用于释放资源(如关闭文件、断开网络连接等)。第18页9.2.1Application类3.单例特性一个JavaFX应用中,Application
子类的实例只会被创建一次,确保程序资源的唯一性。4.线程模型绑定JavaFX有专门的
JavaFXApplicationThread(UI线程),所有UI操作必须在该线程中执行。start()
方法就是在这个线程中运行的,而
init()
和
stop()
则在非UI线程中执行。例9.2一个典型的Application
应用程序实例。第19页9.2.2Scene与JavaUI编程Scene与JavaUI编程有着直接的联系。Scene(场景)是JavaFX中承载所有UI组件的容器,是连接“窗口(Stage)”和“界面元素(如按钮、文本、布局等)”的中间层。简单来说,Scene与JavaUI编程的关系主要体现如下。第20页9.2.2Scene与JavaUI编程1.UI组件的载体任何JavaFXUI元素(文本、按钮、输入框等)都不能直接显示在窗口上,必须先添加到Scene中,再通过Stage.setScene(scene)将场景绑定到窗口。例9.2中的代码://创建UI组件(文本标签)Labellabel=newLabel("HelloJavaFX");//将组件放入场景(设置场景大小为300x200)Scenescene=newScene(label,300,200);//将场景放入窗口并显示primaryStage.setScene(scene);primaryStage.show();这里Scene就是“承上启下”的核心:上连窗口,下接UI组件第21页9.2.2Scene与JavaUI编程2.布局管理的基础复杂的UI界面需要合理排列多个组件(如按钮并排、文本居中等),JavaFX通过“布局容器”(如StackPane、VBox、GridPane)来管理组件位置,而布局容器必须作为Scene的“根节点”存在。例如://创建布局容器(垂直排列组件)VBoxroot=newVBox();root.getChildren().addAll(newButton("按钮1"),newLabel("文本"));//场景以布局容器为根节点Scenescene=newScene(root,400,300);此时Scene通过布局容器间接管理所有组件的排列方式,是UI布局管理的基础第22页9.2.2Scene与JavaUI编程3.UI交互的上下文所有UI事件(如点击按钮、输入文本)的处理,都依赖于Scene提供的上下文环境。例如按钮的点击事件监听,本质上是在Scene的范围内响应交互。在JavaFX中,Scene(场景)是连接窗口与UI组件的核心桥梁,是所有界面元素的“承载者”和布局的“基础容器”。没有Scene,UI组件就无法被窗口显示;理解Scene的作用,是掌握JavaFXUI编程的关键一步。第23页9.2.3基于JavaFX的UI程序结构概览在了解了Application类和Scene类之后,下面我们对例9.1进行分析,以掌握基于JavaFX的一般UI程序结构。该程序由3个部分组成:导入语句:引入JavaFX需要的各种类;类定义:HelloApp类继承自JavaFX的核心类Application;方法实现:包含创建界面、启动程序的关键方法。2026/8/23
*249.3JavaFX核心UI控件第25页9.3JavaFX核心UI控件9.3.1.ChoiceBoxChoiceBox
是一个下拉选择控件,允许用户从预定义的选项列表中选择单个值,适用于选项数量不多的场景。其核心特性有:仅显示当前选中项,点击后展开下拉列表支持单选,默认有占位提示文本(如"请选择")可动态添加/移除选项例9.3ChoiceBox的基本用法举例。第26页9.3JavaFX核心UI控件9.3.2ComboBoxComboBox
是ChoiceBox的增强版,除了下拉选择功能外,还支持手动输入文本,兼具选择和输入功能。ComboBox核心特性有:支持下拉选择和手动输入两种模式(可通过
setEditable(true)
开启编辑)提供搜索过滤功能(输入时自动匹配选项)可自定义单元格渲染器它与ChoiceBox的区别是:ComboBox支持文本输入,ChoiceBox仅支持选择;ComboBox更适合需要灵活输入的场景。例9.4ComboBox的基本用法举例第27页9.3JavaFX核心UI控件9.3.3.ListViewListView
是用于展示可滚动列表项的控件,支持单选或多选,适合展示较多条目,其主要特性有:垂直滚动显示多个项目支持单选(默认)和多选模式(setSelectionMode(SelectionMode.MULTIPLE))通过
setCellFactory()可自定义列表项的外观ListView
一般的使用方法为:ListView<String>listView=newListView<>();第28页9.3JavaFX核心UI控件9.3.4.TableViewTableView
是用于展示表格数据的高级控件,支持排序、筛选、编辑等功能,类似Excel表格。其基本特性有:由列(TableColumn)和行(数据对象)组成支持列排序(点击表头)、数据筛选可自定义单元格渲染和编辑方式支持分页加载大数据集第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-内蒙古-内蒙古检验员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-上海-上海水利机械运行维护工三级(高级工)历年参考题库含答案详解3套试卷
- 月嫂培训考试试题及答案
- 2026年四川高考语文真题试卷及答案
- 成都天府实验北区2026初一入学语文分班考试真题含答案
- 2026年青海(公务员)行测真题及答案
- 2026年辽宁专升本(护理学)考试题库及答案
- 2026 年大学新生入学第一课文明宿舍创建标准学习主题课件
- 2025年度海洋科普知识赛题试题(附答案)
- 痔病全程管理 课件
- 临床重症患者营养支持护理
- 2026-2030中国干海产品行业深度调研及投资前景预测研究报告
- 2026年山西省中考英语试卷(含答案)
- 2026年广东省东莞市南城小学数学三下期中学业水平测试试题含解析
- 粉末冶金技术介绍
- 村级小微权力运行监督管理实施细则
- 【2026】超星尔雅学习通《大学生安全教育(入校篇)》章节测试及答案
- 2026年面条行业分析报告及未来发展趋势报告
- 2026年电力调度员考试押题密卷及完整答案详解(易错题)
- 2026年陆军战士留疆任职考试真题(附答案)
- 《韦氏智力量表第四版(wais-iv)中文版指导手册》
评论
0/150
提交评论