DOC-07-02 使用快捷方法

本章介绍一些“便捷方法”,在JavaFX程序中你可以使用这些方法注册事件处理器(Event Handler)。学习使用更简单的方式创建和注册Event Handler来响应鼠标事件、键盘事件、动作(action)事件、拖拽事件、窗口事件等。

有一些JavaFX类中定义了Event Handler属性,它们可以用来注册Event Handler。给用户定义的Event Handler设置属性会自动注册可接收处理相应的事件类型的Event Handler。Event Handler属性的setter方法是注册Event Handler的快捷方法。

使用快捷方法

许多快捷方法都定义在Node类中,并且这些方法对Node的所有子类也都是可用的。除此之外还有有一些其它类也包含快捷方法。表2-1列出了这些快捷方法可以处理的事件并标识出这些方法是在哪些类中定义的。

表2-1 带有事件处理快捷方法的类

用户动作 事件类型 所在类
按下键盘上的按键 KeyEvent Node、Scene
移动鼠标或者按下鼠标按键 MouseEvent Node、Scene
执行完整的“按下-拖拽-释放”鼠标动作 MouseDragEvent Node、Scene
在一个节点中,底层输入法提示其文本的改变。编辑中的文本被生成/改变/移除时,底层输入法会提交最终结果,或者改变插入符位置。 InputMethodEvent Node、Scene
执行受所在平台支持的拖拽动作 DragEvent Node、Scene
滚动某对象 ScrollEvent Node、Scene
在某对象上执行旋转手势 RotateEvent Node、Scene
在某对象上执行滑动手势 SwipeEvent Node、Scene
触摸某对象 TouchEvent Node、Scene
在某对象上执行缩放手势 ZoomEvent Node、Scene
请求上下文菜单 ContextMenuEvent Node、Scene
按下按钮、显示或隐藏组合框、选择菜单项 ActionEvent ButtonBase、ComboBoxBase、ContextMenu、MenuItem、TextField
编辑列表、表格或者树的子项 ListView.EditEvent

TableColumn.CellEditEvent

TreeView.EditEvent

ListView

TableColumn

TreeView

媒体播放器遇到错误 MediaErrorEvent MediaView
菜单被显示或者隐藏 Event Menu
弹出式窗口被隐藏 Event PopupWindow
选项卡被选择或者关闭 Event Tab
窗口被关闭、显示或者隐藏 WindowEvent Window

注册事件处理器(Event Handler)的快捷方法都有如下格式:

Event-type表示该Event Handler处理的事件类型,例如,setOnKeyTyped表示处理KEY_TYPED事件、setOnMouseClicked表示处理MOUSE_CLICKED事件。event-class表示事件类型的定义类,例如KeyEvent表示与键盘输入有关的事件、MouseEvent表示与鼠标输入有关的事件。字符串<? super event-class>表示该方法接收一个处理event-class类型或其父类型事件的处理器作为参数。例如,当事件是鼠标事件或者键盘事件时都可以使用InputEvent类型的Event Handler。

下面的语句展示了注册Event Handler的方法的定义,该Event Handler用于处理键盘输入时产生的事件,即按键被按下并被释放时产生的事件:

你可以在对快捷方法的调用中把Event Handler定义为匿名类,这种方式可以一步到位地创建和注册事件处理器。Event Handler需要实现handle()方法来提供事件处理代码。

以下是一个使用快捷方法的样例,该样例代码是在NetBeans集成开发环境创建JavaFX应用程序时生成的。如果你在创建JavaFX应用程序使选择了“创建应用程序类”(Create Application Class)选项,创建出的主类就会包含一个“Hello World”程序。样例代码如例2-1所示。

例2-1 Hello World样例

该程序创建了一个仅包含一个按钮的窗口。使用setOnAction()方法注册了一个事件处理器来处理按钮点击事件。事件处理器中的handle()方法通过在控制台打印“Hello World”字符串来处理该事件。

鼠标事件样例

为鼠标事件注册Event Handler的快捷方法包括setOnMouseEntered、setOnMouseExited和setOnMousePressed。例2-2展示了这些Event Handler的样例。

例2-2 鼠标事件的Event Handler样例

要了解类似的Event Handler是如何被使用的,请运行Ensemble样例程序。该样例程序可在Java SE下载页面的“JDK Demons and Samples”部分下载到。Ensemble样例程序同时也提供了Event Handler的源码。

键盘事件样例

为键盘事件注册Event Handler的快捷方法包括setOnKeyPressed和setOnKeyReleased。例2-3展示了这些事件处理器的样例。

例2-3 键盘事件的Event Handler样例

要了解类似的事件处理器是如何被使用的,请运行Ensemble样例程序。该样例程序可在Java SE下载页面的“JDK Demons and Samples”部分下载到。Ensemble样例程序同时也提供了事件处理器的源码。

附加资源

要了解更多关于快捷方法的信息,请参考JavaFX API文档

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/09/doc0702-convenience-methods/
百度已收录