Java程序设计基础 课件 第12章 JavaFX图形用户界面程序设计_第1页
Java程序设计基础 课件 第12章 JavaFX图形用户界面程序设计_第2页
Java程序设计基础 课件 第12章 JavaFX图形用户界面程序设计_第3页
Java程序设计基础 课件 第12章 JavaFX图形用户界面程序设计_第4页
Java程序设计基础 课件 第12章 JavaFX图形用户界面程序设计_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章JavaFX图形用户界面程序设计1教学目标(1) 区分JavaFX、Swing和AWT(2) 理解舞台、场景和节点间的关系(3) 使用GridPane、BorderPane、TitledPane、HBox和Vbox等实现界面布局(4) 了解节点的通用属性style(5) 使用Color类创建颜色(6) 使用Font创建字体(7) 使用Image类创建图形以及使用ImageView创建图形视图2教学目标(8) 理解事件、事件源以及事件类(9) 定义处理器类、注册处理器对象以及编写处理器代码(10)使用内部类、匿名类和lambda表达式进行事件处理(11)使用Button类创建具有文本和图形的按钮,并设置处理器(12)使用TableView显示数据记录集(13)实用菜单栏组件,设置菜单项3内容412.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件内容512.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.1JavaFX概述AWT(AbstractWindowToolkit):抽象窗体工具包Swing:更少依赖于目标平台,且使用更少的本地资源JavaFX:融入了现代GUI技术以方便开发富因特网应用。支持无缝地在桌面或web浏览器中运行支持FXML脚本,类似于HTML编写Web图形用户界面为触摸设备提供多点触控支持,如平板和智能手机具有内建的2D、3D、动画支持,以及视频、音频播放功能JDK7开始成为Java平台一部分Java11从JDK中删除,需单独下载和安装。仍与Java密切相关,支持与Swing、Spring等的集成。6内容712.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.2JavaFX程序的基本结构8为了创建一个基本的JavaFX应用程序,需扩展javafx.application.Application,并重写start()方法。launch方法是JavaFX程序的启动方法,该方法是Application类中的静态方法。从命令行运行JavaFx程序,main()方法不是必需的从一个不完全支持JavaFx的IDE启动JavaFx程序,main()方法可能是需要的运行一个无main()方法的JavaFx应用程序,launch方法自动被JVM调用示例:程序清单12-1FirstJavaFX.java12.2JavaFX程序的基本结构9Stage(舞台):表示一个窗口,是所有JavaFx对象的容器每个JavaFx程序至少有一个主窗口即主舞台,由JVM自动创建,以实参传递给start方法一个JavaFx程序可创建多个舞台,程序清单12-2SecondJavaFX.javaScene(场景):包含所有物理内容(节点)通常,所有待显示对象放入场景对象中Stage的方法setScene,用于设置场景SceneGraph(场景图):不是一个具体类所有节点的集合场景图内的节点以树状结构进行组织,总有一个根节点通常,JavaFx程序使用某种布局面板作为根节点,其他节点作为子节点StageSceneSceneGraph根节点分支节点叶子节点叶子节点叶子节点12.2JavaFX程序的基本结构10JavaFX类体系12-1每个JavaFX主类__________.implementsjavafx.application.Applicationextendsjavafx.application.Application重写start(Stages)方法重写start()方法ABCD提交多选题1分12-2以下哪项陈述是正确的?启动JavaFX主类时会自动创建一个主stage。可以在JavaFX程序中显示多个stage。通过调用stage的show()方法来显示stage。使用addScene方法将场景放置在stage中ABCD提交使用setScene方法将场景放置在stage上E多选题1分内容1312.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.3属性绑定14JavaFX引入了一个称为属性绑定的新概念,可以将一个目标对象和一个源对象绑定。如果源对象中的值改变了,目标对象也将自动改变。绑定对象(绑定属性):目标对象可绑定对象(可观察对象):源对象目标对象tObj采用bind方法和源对象sObj进行绑定:tObj.bind(sObj);bind方法在perty.Property接口中定义。目标对象是javafx.Bperty.Property的一个实例,许多JavaFX类(面板、节点等)的属性都是Property的实例。源对象是javafx.beans.value.ObservableValue接口的一个实例。ObservableValue实例是一个包装了值的实体,允许值发生改变时被观察到。12.3属性绑定15JavaFX为基本数据类型和字符串定义绑定属性。double,float,long,int,boolean,String对应绑定属性(抽象类):DoubleProperty,FloatProperty,LongProperty,IntegerProperty,BooleanProperty,StringProperty具体子类属性前加Simple,如:SimpleDoublePropertyJavaFX类中的每个绑定属性都有一个获取方法和设置方法用于返回和设置属性的值。同时还有一个获取方法返回属性本身。例如,Circle的属性centerX:值的获取方法:getCenterX()值的设置方法:setCenterX(double)属性的获取方法:centerXProperty()程序清单12-3PropertyBindDemo.java12.3属性绑定16内容1712.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.4布局面板和组18面板:组织、定位、布局其内部节点的容器javafx.scene.layout.Pane是这些类的基类类说明Pane面板类的基类,以getChiledren()返回内部节点列表HBox单行水平布局内部节点VBox单列垂直布局内部节点StackPane居中,以堆栈式放置所有内部节点BorderPane面板划分为顶部、底部、左侧、右侧和中间区域,用于分区域放置节点FlowPane以水平或垂直往复折返式放置节点GridPane内部节点以网格式布局12.4布局面板和组javafx.scene.Group用于将节点组成一个逻辑组来进行转换或缩放。例如,下面的代码通过一个循环将5个矩形添加到Group对象g中19Groupg=newGroup();for(inti=0;i<5;i++){Rectangler=newRectangle();r.setY(i*20);r.setWidth(100);r.setHeight(10);r.setFill(Color.RED);g.getChildren().add(r);}12.4.1Pane面板20Pane面板是所有面板类的基类,它对其中的节点对象的显示次序不施加任何的控制Pane面板调整自己的大小以适应其内容示例:程序清单12-4PaneDemo.java在往面板对象中增加节点时,需要先调用方法getChildren(),返回一个列表对象,再调用add或addAll方法,往列表中增加节点顶部面板左边底部右边Insets:顶、右、底、左vGap垂直间距hGap水平间距12-3下列说法哪个是正确的?()一个Node可以放置在一个Pane中一个Node可以放置到一个Scene中一个Pane可以放置到一个Control中一个Shape可以放置到一个Control中ABCD提交单选题1分12-4将一个circle对象加入到一个面板中,使用()pane.add(circle);pane.addAll(circle);pane.getChildren().add(circle);pane.getChildren().addAll(circle);ABCD提交多选题1分12.4.2StackPane面板23StackPane将其节点依次叠加在另一个上,最后添加的节点位于最上面。默认情况下,StackPane将设置为Pos.CENTER,指定节点居中对齐构造方法:(1)publicStackPane():创建一个StackPane对象,默认使用Pos.Center对齐方式。(2)publicStackPane(Node...children):创建一个StackPane对象,默认使用Pos.Center对齐方式,可以添加不定数量的节点对象。示例:程序清单12-5StackPaneDemo.java12.4.3FlowPane面板24FlowPane按照节点加入的次序,从左到右或从上到下布局。当一行或一列排满遇到容器的边界时,则折返,开始新的一行或一列。枚举常量Orientation.HORIZONTAL或者Orientation.VERTICAL可确定FlowPane内部节点是按水平还是按垂直排列的。通过alignment设置FlowPane内部节点的对齐方式,通过hgap和vgap设置节点左右或上下间距。示例:程序清单12-6FlowPaneDemo.java12.4.4GridPane面板25GridPane面板,用于对内部节点按行和列对齐的样式进行布局。GridPane也可以采用让一个节点跨越多个网格,实现更复杂的布局。GridPane仅提供了一个构造方法:publicGridPane(),创建一个水平/垂直间距为0并且对齐方式为TOP_LEFT的GridPane对象。示例:程序清单12-7GridPaneDemo.java12.4.4GridPane面板2612.4.4GridPane面板272812-5在一个GridPane面板中,将一个结点加到第一行,第二列,使用________.pane.add(node,1,2);pane.getChildren().add(node,0,1);pane.add(node,0,1);pane.add(node,1,0);ABCD提交单选题1分12.4.5Vbox和HBox面板29VBox以垂直列的形式排列其内部节点;HBox以水平行的方式排列节点。构造方法1)publicVBox\HBox():无参构造方法,创建一个空的VBox\HBox对象。2)publicVBox\HBox(doublespacing):使用指定的间距创建一个VBox\HBox对象,并设置节点之间的垂直水平间距。3)publicVBox\HBox(Node…children):创建一个VBox\HBox对象,并将指定的节点添加进来,默认的间距为0。4)publicVBox\HBox(doublespacing,Node…children):使用指定的间距创建一个VBox\HBox对象,并将指定的节点添加进来。示例:程序清单12-8VBox_HBoxDemo.java3012-6将两个结点node1、node2放置到一个Hbox,使用___________.

p.add(node1,node2);p.addAll(node1,node2);p.getChildren().add(node1,node2);p.getChildren().addAll(node1,node2);ABCD提交单选题1分12.4.6BorderPane面板31BorderPane将节点放置在五个区域,各区域默认对齐方式如下:1)Top区域:Pos.TOP_LEFT2)Bottom区域:Pos.BOTTOM_LEFT3)Left区域:Pos.TOP_LEFT4)Right区域:Pos.TOP_RIGHT5)Center区域:Pos.CENTER构造方法:publicBorderPane():默认构造方法,创建一个没有任何子节点的BorderPane对象。publicBorderPane(Nodecenter):创建一个BorderPane对象,并指定中间的子节点。publicBorderPane(Nodecenter,Nodetop,Noderight,Nodebottom,Nodeleft):创建一个BorderPane对象,并指定中间、顶部、右边、底部、左边和中间的节点。示例:程序清单12-9BorderPaneDemo.java内容3212.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.5Node节点33Node:是添加到场景图中所有组件的基类。最常用的属性:样式styleJavaFX的样式属性类似于Web页面中指定HTML元素样式的CSS。因此JavaFX的样式属性也称为JavaFXCSS。设定样式的语法是styleName:value,多个样式可通过分号(;)分隔,例如:circle.setStyle("-fx-stroke:black;-fx-fill:blue");变换Transformation:一组属性变换,对节点进行平移、旋转、缩放或者剪切平移指沿着坐标系的x轴或y轴移动节点旋转变换是指围绕指定的“中心”点旋转节点的坐标空间,使节点看起来像旋转缩放变换会导致节点根据缩放因子放大或缩小剪切变换,也称为扭曲,是指通过剪切因子指定节点在x和y轴方向上的倾斜程度。示例:button.setRotate(30);//把一个按钮顺时针旋转30度3412-7节点对象设定样式的语法是

[填空1]

作答填空题1分3512.5.1ColorColor类可用于创建颜色。Color类是不可修改的。RGBA模型:r:red,g:green,b:blue,a:alpha可通过三色的值来定义一个颜色0.0<=r,g,b<=1.0或0<=r,g,b<=255(int)0.0(透明)<=opacity<=1.0(不透明)示例:程序清单12-10Color_demo.java方法说明staticColorcolor(doublered,doublegreen,doubleblue)以红绿蓝三个分量创建一个不透明的颜色实例,参数范围是0-1.0staticColorcolor(doublered,doublegreen,doubleblue,doubleopacity)以红绿蓝及不透明度四个分量创建一个颜色实例,参数范围是0-1.0Colorbrighter()创建一个比当前Color对象更亮的对象Colordarker()创建一个比当前Color对象更暗的对象staticColorrgb(intred,intgreen,intblue)以红绿蓝三个分量创建一个不透明的颜色实例,三个分量值的范围是0-255staticColorrgb(intred,intgreen,intblue,doubleopacity)以红绿蓝及不透明度四个分量创建颜色实例,opacity取值范围是0-1staticColorvalueOf(Stringvalue)基于一个字符串表示创建一个颜色实例staticColorweb(StringcolorString)基于一个HTML或CSS属性字符串,创建一个RGB颜色实例staticColorweb(StringcolorString,doubleopacity)基于一个HTML或CSS属性字符串及指定的不透明度,创建一个RGB颜色实例12.5.2Fontjavafx.scene.text.Font类描述字体的字体系列名称、粗细、字体姿势和大小等,也是一个不可变类,即一个Font对象在创建之后不可改变。字体系列名称指在操作系统中安装的字体系列名,比如TimesNewRoman、Courier、Consolas、宋体、楷体等36属性说明Stringfamily字体系列doublesize字体大小,被描述为以点为单位指定,这些点是大约1/72英寸的真实世界测量值,可用字号表示,如12、24等FontWeightweight表示字体的粗细程度,枚举类型,取值:FontWeight.BLACK(900)、FontWeight.BOLD(700)、FontWeight.MEDIUM(500)、FontWeight.NORMAL(400)、FontWeight.LIGHT(300)、FontWeight.THIN(100)、FontWeight.EXTRA_Bold(800)、FontWeight.SEMI_BOLD(600)、FontWeight.EXTRA_LIGHT(200),圆括号中数字表示粗细程度。FontPosturestyle字体姿势,表示字体是否斜体。枚举类型,取值:FontPosture.REGULAR(正常体)、FontPosture.ITALIC(斜体)12.5.2Font37方法说明staticFontfont(Stringfamily,doublesize)根据字体系列名称和大小搜索合适的字体。staticFontfont(Stringfamily,FontPostureposture,doublesize)根据字体系列名称和姿势样式搜索适当的字体。staticFontfont(Stringfamily,FontWeightweight,doublesize)根据字体系列名称和粗细、大小搜索适当的字体。staticFontfont(Stringfamily,FontWeightweight,FontPostureposture,doublesize)根据字体系列名称、粗细、姿势、大小搜索适当的字体。staticFontgetDefault()获取默认字体,该字体将来自“System”系列,通常为“Regular”样式StringgetFamily()返回此字体的字体系列名称staticList<String>getFamilies()获取用户系统上安装的所有字体系列,包括任何应用程序字体或SDK字体。staticList<String>getFontNames()获取用户系统上安装的所有字体系列的字体全名,包括任何应用程序字体或SDK字体。staticList<String>getFontNames(Stringfamily)获取字体系列family的所有字体全名StringgetName()返回字体名称doublegetSize()返回字体大小StringgetStyle()返回字体样式12.5.2Font构造方法Font(doublesize):以给定的字体大小,使用默认名“System”创建一个Font对象Font(Stringname,doublesize):使用指定的字体全名和字体大小创建一个Font对象。字体全名由字体系列名称和字体粗细、字体姿势等构成示例:程序清单12-11Font_demo.java383912-8以下哪项陈述是正确的?Color对象是不可变的。Font对象是不可变的。创建颜色对象后,不能更改其内容。字体对象一旦创建,就不能更改其内容。ABCD提交多选题1分12.5.3Shape类40JavaFX提供了多种形状类,用于绘制文本、直线、圆、矩形、圆、椭圆、弧、多边形、折线。Shape是抽象类,定义一些共同属性:fill,stroke,strokeWidth1)Textjavafx.scene.shape.Text类定义了一个节点,用于在一个起始坐标点(x,y)处显示一个字符串Text类有3个构造方法:Text(),创建一个空Text;Text(Stringtext),以指定文本text创建一个文本对象;Text(doublex,doubley,Stringtext),以指定x、y坐标和文本text创建一个文本对象。412)Linejavafx.scene.shape.Line类用于绘制一条线段,通过4个属性(starX、starY、endX、endY)定义一条线段的起点和终端423)RectangleRectangle类通过左上角坐标(x,y)、宽度w、高度h创建一个矩形对象,还可以设置其圆角处弧的水平直径aw(默认为0,设置方法setArcWidth(aw))和垂直直径ah(默认为0,设置方法setArcHeight(ah))434)javafx.scene.shape.Ellipse类和Circle类Ellipse类(椭圆类)通过椭圆中心坐标(x,y)、椭圆水平半径radiusX、椭圆垂直半径radiusY创建一个椭圆对象Circle类通过圆心坐标(x,y)、半径radius创建一个圆对象。445)javafx.scene.shape.Arc类一段弧可以看作一个椭圆的一部分,因此,Arc类可通过椭圆中心坐标(x,y)、椭圆水平半径radiusX、椭圆垂直半径radiusY、起始角度startAngle、跨度length(弧所覆盖的角度)创建一段弧角度使用度为单位,遵循通常的数学约定,即,0度是水平向左,正的角度是从0度开始顺时针方向旋转的角度。456)javafx.scene.shape.Polygon类和Polyline类Polygon和Polyline类分别描述多边形和折线对象。Polygon和Polyline都定义了依次相连的点,这些点构成一个序列。两者的区别是在绘图时Polyline的第一个点和最后一个点不画连接线,不会构成封闭区域,不需要用填充色填充。467)Shape示例示例:程序清单12-12给出了一个创建各种形状的示例,ShapesDemo.java474812.5.4Image和ImageView类Image类表示一个图像,ImageView类可以用于显示一个图像表明图像是否正确载入图像的高度图像的宽度图像载入已经完成的百分比从一个文件或一个URL创建一个图像4912.5.4Image和ImageView类图像改变大小来适应边界框的高度图像改变大小来适应边界框的宽度ImageView原点的y坐标图像视图中显示的图像创建一个ImageView用给定的图像创建一个ImageView从给定文件或URL载入的图像创建一个ImageViewImageView原点的x坐标程序清单12-13ImageViewApp_Demo.java内容5012.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.6事件驱动编程5112.6.1事件处理基本概念12.6.2事件委派和事件处理12.6.3示例:简易计算器12.6.4鼠标事件12.6.5键盘事件12.6.1事件处理基本概念为完成具有交互功能的GUI程序,需要使用事件驱动编程,对事件进行响应。简单示例:程序清单12-14EventHandling_demo.java事件:可被定义为一个告知程序某件事发生的信号。

事件由外部的用户动作触发,如鼠标的移动、单击、键盘按键。事件源对象:产生一个事件并且触发它的组件称为事件源对象。事件处理器(EventHandler)或事件监听器(EventListener)事件监听器是一个接口或类,用于定义事件处理的行为和回调方法。它定义了特定类型的事件发生时应该执行的操作,负责侦听和响应特定类型的事件。525312.6.1事件处理基本概念事件类型(EventType)事件类型表示特定类型的事件,如鼠标点击、键盘按动等。一个事件是一个事件类的实例。Java事件类的根类是java.util.EventObject,而JavaFX事件类的根类是javafx.event.Event。Event是EventObject的子类。一个事件对象包含与事件相关的任何属性事件源对象可以通过EventObject类的getSource获取EventObject子类处理特定类型的事件EventObject12.6.1事件处理基本概念表12-20给出了用户动作、源对象、事件类型、处理器接口以及处理器。5412.6事件驱动编程5512.6.1事件处理基本概念12.6.2事件委派和事件处理12.6.3示例:简易计算器12.6.4鼠标事件12.6.5键盘事件5612.6.2事件委派和事件处理JavaFX采用事件委派机制进行事件处理:一个事件源对象(如按钮)触发一个事件(如鼠标点),然后该事件对象委派给事件处理器处理。成员内部类形式:程序清单12-15HandleEventInnerCls.java匿名内部类形式:程序清单12-16HandleEventAnonymousInner.javaLambda表达式形式:程序清单12-17HandelEventLambda.java12.6事件驱动编程5712.6.1事件处理基本概念12.6.2事件委派和事件处理12.6.4示例:简易计算器12.6.5鼠标事件12.6.6键盘事件12.6.3示例:简易计算器本例使用JavaFX设计一个简易计算器,支持简单的四则运算(支持负数),在此基础上,实现了连续运算功能。程序演示:程序清单12-18Calculator.java5812.6事件驱动编程5912.6.1事件处理基本概念12.6.2事件委派和事件处理12.6.3示例:简易计算器12.6.4鼠标事件12.6.5键盘事件12.6.4鼠标事件当一个鼠标按键在一个节点上或者一个场景中被按下、释放、单击、移动或拖动时,一个MouseEvent被触发。MouseEvent对象捕捉事件发生时的点击次数、鼠标位置坐标以及哪个鼠标按键被按下鼠标按键由枚举类型MouseButton表示MouseButton枚举常量有:1)PRIMARY,主要鼠标按钮(通常是左键);2)SECONDARY,次要鼠标按钮(通常是右键);3)MIDDLE,中间鼠标按钮(通常是滚轮点击);4)NONE,没有鼠标按钮;5)BACK,后退鼠标按钮;6)FORWARD,前进鼠标按钮。可以使用MouseEvent对象的getButton方法来检测哪个按钮被按下。例如,mouseEventObj.getButton()==MouseButton.PRIMARY还可使用isPrimaryButtonDown()、isSecondaryButtonDown()、isMiddleButtonDown()来测试相应的键是否被按下6012.6.4鼠标事件用户动作事件注册方法按下鼠标setOnMousePressed(EventHandler<MouseEvent>)释放鼠标setOnMouseReleased(EventHandler<MouseEvent>)单击鼠标setOnMouseClicked(EventHandler<MouseEvent>)鼠标进入setOnMouseEntered(EventHandler<MouseEvent>)鼠标退出setOnMouseExited(EventHandler<MouseEvent>)鼠标移动setOnMouseMoved(EventHandler<MouseEvent>)鼠标拖动setOnMouseDraged(EventHandler<MouseEvent>)61示例:鼠标点击文本时,文本的字体会变化;当鼠标拖动文本时,文本跟随鼠标移动。程序清单12-19TestMouseEvent.java6212-8为了处理一个在面板p上发生的鼠标点击事件,注册处理器使用____________.p.setOnMouseClicked(handler);p.setOnMouseDragged(handler);p.setOnMouseReleased(handler);p.setOnMousePressed(handler);ABCD提交单选题1分12.6事件驱动编程6312.6.1事件处理基本概念12.6.2事件委派和事件处理12.6.3示例:简易计算器12.6.4鼠标事件12.6.5键盘事件12.6.5键盘事件在一个节点或一个场景上面只要按下、释放或者敲击键盘按键,就会触发一个KeyEvent事件。事件注册方法64用户动作事件注册方法按下键setOnKeyPressed(EventHandler<KeyEvent>)释放键setOnKeyReleased(EventHandler<KeyEvent>)敲击键setOnKeyTyped(EventHandler<KeyEvent>)12.6.5键盘事件KeyEvent常用方法6566枚举型KeyCode常量12.6.5键盘事件如何判断哪个键被按下?12.6.5键盘事件67对于按下键和释放键的事件:getCode

返回KeyCode中的常量getText

返回一个描述键的代码的字符串getCharacter

返回一个空字符串对于敲击键的事件:getCode

返回UNDEFINEDgetCharacter返回相应的Unicode字符或和敲击键相关的一个字符序列程序清单12-20TestKeyEvent.java6812-9为了处理一个在面板p上发生的键盘按下事件,注册处理器使用____________.p.setOnKeyClicked(handler);p.setOnKeyTyped(handler);p.setOnKeyReleased(handler);p.setOnKeyPressed(handler);ABCD提交单选题1分思考如何设置一个焦点到结点上,使得它可以监听键盘事件?69一个结点只有获得输入焦点,才可以接收键盘事件。获得输入焦点的途径是结点对象调用requestFocus()方法。内容7012.1JavaFX概述12.2JavaFX程序的结构12.3属性绑定12.4布局面板和组12.5Node类12.6事件驱动编程12.7JavaFXUI控件12.7JavaFXUI控件7112.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.1标签Label72标签(label)是一个显示小段文字、一个节点或同时显示两者的区域。它经常用来给其他组件做标签。标签和按钮共享许多共同的属性。这些共同属性定义在Labeled类中Labeled类定义了Label、Button、CheckBox、RadioButton的共同属性12.7.1标签Label73程序清单12-21LabelDemo.java7412-10创建一个具有指定文本text的标签,使用__________.newLabelled();newLabel();newLabelled(text);newLabel(text);ABCD提交单选题1分7512-11在标签组件lbl中设置文本颜色为红色,使用_________.lbl.setFill(Color.red);lbl.setTextFill(Color.red);lbl.setFill(Color.RED);lbl.setTextFill(Color.RED);ABCD提交单选题1分12.7JavaFXUI控件7612.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.2按钮按钮是单击时触发动作事件的组件。JavaFX提供了常规按钮,开关按钮,复选框按钮和单选按钮。这些按钮的公共特性在

ButtonBase和Labeled类中定义。77程序清单12-22ButtonSimpleDemo.javaCheckBox复选框用于提供给用户进行选择。如同Button,CheckBox

继承了来自ButtonBase和Labeled的所有属性,如onAction,text,graphic,alignment,graphicTextGap,textFill,contentDisplay。另外,它提供了selected属性用于表明一个复选框是否被选中。

784.复选钮程序清单12-23CheckBoxDemo.java7912-12_________检查一个复选框chk是否被选择chk.getSelected()chk.selected()chk.isSelected().chk.select()ABCD提交单选题1分单选按钮(RadioButton)单选按钮也称为选项按钮,可让用户从一组选项中选择一个单一的条目。单选按钮是开关按钮(ToggleButton)的子类。开关按钮类似按钮80程序清单12-24RadioButtonDemo.java8112-13_________检查一个单选按钮rb是否被选择rb.getSelected()rb.selected()rb.isSelected().rb.select()ABCD提交单选题1分12.7JavaFXUI控件8212.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.3按钮综合示例一个综合使用各种按钮的示例,用户界面左边有一栏是单选按钮和开关按钮,中间是显示的文本,右边一栏是复选框按钮,底部一栏是普通按钮。程序代码如程序清单12-25

AllButtonsDemo.java8312.7JavaFXUI控件8412.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.4

文本框文本框可用于输入或显示一个字符串。TextField

是TextInputControl的子类。提供了两个构造方法:1)publicTextField():无参构造方法,创建一个空的TextField对象。2)publicTextField(Stringtext):创建一个具有指定初始文本的TextField对象。8512.7.4

文本框文本框可用于输入或显示一个字符串。TextField

是TextInputControl的子类。86程序清单12-26TextFieldDemo.java8712-14文本框tf的方法__________可以取得其内容。tf.getText(s)tf.getText()tf.getString()tf.findString()ABCD提交单选题1分12.7JavaFXUI控件8812.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.5

文本区TextArea控件是用于显示和编辑多行文本的GUI控件,其提供了一个可以输入和展示多行文本的区域,并提供一系列属性和方法来操作和管理文本内容。89程序清单12-27TextAreaDemo9012-15TextAreata要折到下一行,需调用____________.ta.setLineWrap(false)ta.setLineWrap(true)ta.WrapLine()ta.wrapText()ABCD提交ta.setWrapText(true)E单选题1分12.7JavaFXUI控件9112.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.6

组合框组合框也称为选择列表框或下拉列表框,它包含一个条目列表,用户可以下拉条滚动从中选择一个。列表框也可以设置为可编辑的,供用户输入信息。92程序清单12-28ComboBoxDemo.java9312-16在一个组合框中,多少项可以被添加进来()?012无限ABCD提交单选题1分9412-17在组合框中,一次可有多少项被选择?()012不限ABCD提交单选题1分9512-18_______________返回组合框cbo的选择项.cbo.getSelectedIndex()cbo.getSelectedItem()cbo.getSelectedIndices()cbo.getSelectedItems()ABCD提交cbo.getValue()E单选题1分9612-19方法__________往组合框cbo中增加一个选项.cbo.add(s)cbo.addChoice(s)cbo.addItem(s)cbo.addObject(s)ABCD提交cbo.getItems().add(s)E单选题1分12.7JavaFXUI控件9712.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.7列表视图ListView列表视图(ListView)控件完成的功能与组合框控件基本相同,不同之处在于,列表视图控件允许选择多个值。ListView是一个泛型类,泛型T指定一个列表视图中的元素的数据类型。98程序清单12-29ListViewDemo.java12.7.7列表视图ListViewListView默认情况下,选择模式是单选的。getSelectionModel()方法返回一个selectionModel实例,该实例包含了设置选择模式以及获得被选中的索引值和选项的方法。选择模式由以下两个常量之一定义:SelectionMode.MULTIPLE,SelectionMode.SINGLE以下代码创建一个具有5个选项的列表视图:99ObservableList<String>items=FXCollections.observableArrayList(“item1”,“item2”,“item3”,“item4”,“item5”,“item6”);ListView<String>lv=newListView<>(items);lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);ObservableList<String>itemList=FXCollections.observableArrayList("选项1","选项2","选项3","选项4","选项5");ListView<String>lv=newListView<>(itemList);SelectionMode<String>sMode=lv.getSelectionModel();sMode.setSelectionMode(SelectinMode.MULTIPLE);12.7.7列表视图ListViewListView事件处理代码:列表视图的选择模式具有selectedItemProperty属性,这个属性是一个Observable的实例,可以在它上面添加一个监听器处理属性的变化100lv.getSelectionModel().selectedItemProperty().addListener(newInvalidationListioner(){publicvoidinvalidated(Observableov){System.out.println("Selectedindices:"+lv.getSelectionModel().getSelectedIndices());}});lv.getSelectionModel().selectedItemProperty().addListener(ov->{System.out.println("Selectedindices:"+lv.getSelectionModel().getSelectedIndices());});程序清单12-29ListViewDemo.java10112-20用于注册侦听器以处理列表视图项改变的语句是___________.lv.getItems().addListener(e->{processStatements});lv.addListener(e->{processStatements});lv.getSelectionModel().selectedItemProperty().addListener(e->{processStatements});lv.getSelectionModel().addListener(e->{processStatements});ABCD提交单选题1分12.7JavaFXUI控件10212.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.8表格视图TableViewTableView控件可以按行显示无限数量的数据记录,这些数据可以分解为多个列。因此,TableView与ListView控件非常相似,其主要是增加了对列的支持。10312.7.8表格视图TableViewTableView控件可以按行显示无限数量的数据记录,这些数据可以分解为多个列。因此,TableView与ListView控件非常相似,其主要是增加了对列的支持。104程序清单12-30TableView_demo.java12.7JavaFXUI控件10512.7.1标签12.7.2按钮12.7.3按钮综合示例12.7.4文本框12.7.5文本区12.7.6组合框12.7.7列表视图12.7.8表格视图12.7.9菜单栏12.7.10图表12.7.9菜单栏MenuBar106JavaFXMenuBar是一个功能强大的菜单栏控件,在JavaFX中通常用于创建应用程序的菜单栏。MenuBar可以包含多个Menu,每个Menu可以包含多个MenuItem。MenuB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论