使用快捷方法
许多快捷方法都定义在Node类中,并且这些方法对Node的所有子类也都是可用的。除此之外还有有一些其它类也包含快捷方法。表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 ListView
TableColumn.CellEditEvent TableColumn
TreeView.EditEvent ListView
媒体播放器遇到错误 MediaErrorEvent MediaView
菜单被显示或者隐藏 Event Menu
弹出式窗口被隐藏 Event PopupWindow
选项卡被选择或者关闭 Event Tab
窗口被关闭、显示或者隐藏 WindowEvent Window
注册事件处理器(Event Handler)的快捷方法都有如下格式:
setOnEvent-type(EventHandler value)
Event-type表示该Event Handler处理的事件类型,例如,setOnKeyTyped表示处理KEY_TYPED事件、setOnMouseClicked表示处理MOUSE_CLICKED事件。event-class表示事件类型的定义类,例如KeyEvent表示与键盘输入有关的事件、MouseEvent表示与鼠标输入有关的事件。字符串表示该方法接收一个处理event-class类型或其父类型事件的处理器作为参数。例如,当事件是鼠标事件或者键盘事件时都可以使用InputEvent类型的Event Handler。
下面的语句展示了注册Event Handler的方法的定义,该Event Handler用于处理键盘输入时产生的事件,即按键被按下并被释放时产生的事件:
setOnKeyTyped(EventHandler value)
你可以在对快捷方法的调用中把Event Handler定义为匿名类,这种方式可以一步到位地创建和注册事件处理器。Event Handler需要实现handle()方法来提供事件处理代码。