JavaFx UI组件和多媒体
引言JavaFX提供了许多UI组件,用于开发全面的用户界面
Oracle公司提供了可视化设计和开发GUI的工具。这使得程序员可以用最少的编码快速将图形用户界面(GUI)元素组装在一起,然而,任何工具都不是万能的。有时需要修改这些工具生成的程序。所以,理解JavaFx GUI程序设计的一些基本概念非常有必要。
Labeled和Label
要点提示 :JavaFX提供了许多组件,用于开发全面的用户界面
标签(label)是一个显示小段文字、一个节点或同时显示两者的区域。它通常用来给其他组件(通常是文本域)做标签。
标签和按钮共享许多共同的属性。这些属性定义在Labeled类中。
Label可以使用下面三种构造方法的其中之一进行构建,如图:
Graphic属性可以是任何一个节点,比如一个形状、一个图像或者一个组件。
*注意: *
使用ContentDisplay()用于设置的不是标签相对于图像节点的位置,而是图像节点相对于标签的位置
HBox将所有节点放在水平线上
按钮
button是单击时触发动作时间的组件。JavaFx提供了常规按钮、开关按钮、复选框按钮和单选按钮。这些按钮的共同特性在ButtonBase和Label类中定义。
按钮与标签非常相似,除了按钮具有定义在ButtonBase类中的onAction属性,该属性设置一个用于处理按钮动作的处理器。
*注意: *
BorderPane是这样一个面板: 将节点放置在顶部、右边、底部、左边以及中间区域
复选框
复选框用于提供给用户进行选择。
复选框提供了selected属性用于表明一个复选框是否被选中。
VBox: 节点放在单列里
HBox: 节点放在单行里
单选按钮 radio button
又称为选项按钮,用于让用户从一组选项中选择一个单一的条目。
外观上单选按钮类似于复选框
复选框是方形的,可以选中或者不选中
单选按钮显示一个圆,或是填充的或是空白的。分别对应选中和未选中
RadioButton是ToggleButton的子类。单选按钮和开关按钮的不同之处是,单选按钮显示一个圆,而开关按钮渲染成类似按钮
文本域 text filed
可以用于输入或者显示一个字符串。
TextField是TextInputControl的子类。
注意: *
如果一个文本域用于输入密码,使用PasswordField来替代TextFiled。PasswordField继承自TextField,将输入文本隐藏为回显字符…..
文本区域 TextArea
要点提示: TextArea允许用户输入多行文本
如果需要让用户输入多行文本,可以创建多个TextField的实例。或者选择使用TextArea,它允许用户输入多行文本
TextArea提供滚动支持,但是通常而言,创建一个ScrollPane对象来包含一个TextArea的实例,并且让ScrolPane处理TextArea的滚动会更加方便。
提示: 可以将任何节点放置在ScrollPane中。如果空间太大以至于不能在显示区域内完整显示,ScrollPane提供了垂直和水平方向的自动滚动支持
组合框 combo box
要点提示 :组合框也称为选择列表(choice list)或下拉式列表(drop-down),他包含一个条目列表,用户能够从中进行选择。
组合框可以限制用户的选择范围,并避免对输入数据有效性进行繁琐的检查。以下为ComBox类中的一些常用的属性和构造方法。
ComboBox定义为一个泛型类。泛型T为保存在一个组合框中的元素指定元素类型。
ComBox继承自ComBoxBase。ComBox可以触发一个ActionEvent事件。当一个条目被选中后,一个ActionEvent事件被触发。
ObservableList是Java.util.List的子接口,因此你可以将定义在List中的所用方法应用于ObservableList。
JavaFX提供了一个静态方法FXCollections.observableArrayList(arrayOfElements)来从一个元素数组中创建一个ObservableList。
列表视图 ListView
ListView是一个泛型类。泛型T为存储在一个列表视图中的元素指定了元素类型。
如下是: ListView的详细:
getSelectionModel()方法返回一个SelectionModel实例,该实例包含了设置选择模式以及获得被选中的索引值和条目的方法。
选择模式由以下连个常量之一定义,分别是SelectionMode.MULTIPLE和SelectionMode.SINGLE。它们表明可以选择单个还是多个条目。默认为SINGLE.
注意⚠️:
程序代码运行之后,在列表视图中具体实现多选需要结合特定的按键。例如在mac os上,按住command的同时,用鼠标多选项目即可。
滚动条 ScrollBar
要点提示: ScrollBar是一个允许用户从一个范围的值中进行选择的组件
用户可以通过鼠标操作改变滚动条的值。
ScrollBar的属性如下:
注意: 滚动条的轨道宽度对应于max + visibleAmount。当一个滚动条设置为它的最大值时,块的左侧位于max,右侧位于max + visibleAmount。
实际操作中的经验: 想要实现拖动滑动条移动Text的位置,必须将文本放在一个面板中,然后面板置于边框面板的中央。如果文本直接放在边框面板的中央,不能通过重设它的x和y属性改变文本的位置。
滑动条 Slider
要点提示 :Slider与ScrollBar类似,但是Slider有更多属性,并且可以以多种形式显示。Slider允许用户通过在一个有界的区间中滑动滑块,从而以图形方式选择一个值。滑动条可以显示区间中的主刻度以及次刻度。刻度之间的像素值是由majorTickUnit和minorTickUnit属性指定的,分别表示主像素和次要像素。
滑块可以水平显示也可以垂直显示,可以带刻度可以不带刻度。
注意:垂直滚动条的值从上向下是增加的,但是垂直滑动条的值从上到下是减少的。
示例学习: 开发一个井字游戏
*注意: *在开发和测试一个Java项目时,可以采用渐进的方法。
视频和音频
*要点提示: *使用Media来获得媒体源,使用MediaPlayer类来播放和控制媒体,使用MediaView来显示视频。
媒体(视频和音频)对于开发富因特网应用是必要的。
JavaFX支持MP3、AIFF、WAV以及MPEG-4音频格式以及FLV和MPEG-4视频格式。
Media类代表了一个媒体源,具有duration、width以及height属性。
可以从一个Internet URL字符串中创建以一个Media对象。
MediaPlayer类播放媒体,并通过一些属性来控制媒体播放,比如autoPlay、currentCount、cycleCount、mute、volume和totalDuration。可以从一个媒体对象来构建一个MediaPlayer对象,并使用pause()、play()方法来暂停和继续播放。
MediaView类是Node的子类,提供MediaPlayer播放的Media视图。MediaView类提供了一些属性用于观看媒体。
Media,MediaPlayer,MediaView的关系如下:
一个Media对象支持实时流媒体。一个Media对象可以被多个播放器共享,并且不同的视图可以使用同一个MediaPlayer对象。