button常用功能实现

本文章讲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) {
// TODO Auto-generated method stub
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) {
// TODO Auto-generated method stub
System.out.println(event.getCode().getName()+" 按下");
}});

按键释放检测的代码这样写:

1
2
3
4
5
6
7
//释放检测
b1.setOnKeyReleased(new EventHandler<KeyEvent>() {

public void handle(KeyEvent event) {
// TODO Auto-generated method stub
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上面的。