本文章讲button的多击、键盘按键、快捷键功能的实现
多击
关于按钮的单击事件前面文章已经提到了如何实现,其关键是使用setOnAction
方法添加监听。而多击事件的实现思路与单击不同,多击实际上是根据addEventHandler
通过过滤点击次数实现多击事件,需要注意的是这个方法检测到的单击不区分鼠标的按键,也就鼠标左键、中键和右键都能检测到,所以传统意义上的单击的话可以使用event.getButton()
来获取按下按键进行过滤。代码实现如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| b1.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) { System.out.print("addEventHandler " + event.getButton().name() + " 点击");
if (MouseButton.PRIMARY.equals(event.getButton()) && event.getClickCount() == 1) { System.out.println(" -->单击 " + event.getClickCount()); } else if (MouseButton.PRIMARY.equals(event.getButton()) && event.getClickCount() == 2) { System.out.println(" -->双击 " + event.getClickCount()); } else if (MouseButton.PRIMARY.equals(event.getButton()) && event.getClickCount() > 2) { System.out.println(" -->多击 " + event.getClickCount()); } System.out.println(); } });
|
键盘按键检测
按键检测有两个方法,分别是检测按键按下和按键释放。检测按键按下的代码这样写:
1 2 3 4 5 6 7
| b1.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent event) { System.out.println(event.getCode().getName()+" 按下"); }});
|
按键释放检测的代码这样写:
1 2 3 4 5 6 7
| b1.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent event) { System.out.println(event.getCode().getName()+" 释放"); }});
|
快捷键
快捷键在视频中列举是四种,但是我只打算学一种。而且这种有些地方还不太会,所以直接代码:
1 2 3 4 5 6 7
| KeyCodeCombination kcc = new KeyCodeCombination(KeyCode.Z,KeyCodeCombination.ALT_DOWN ); scene.getAccelerators().put(kcc, new Runnable() { public void run() { System.out.println("kuaijiejian"); } });
|
这段代码设置的快捷键是ALT+Z。而且快捷键是设置在Scene上面的。