使用相同的EventHandler for MouseEvent& JavaFX中的KeyEvent?

时间:2016-02-13 18:25:28

标签: java javafx event-handling javafx-8 eventhandler

我是Java编程的新手,所以这个问题对很多人来说可能听起来很愚蠢。我正在努力让自己熟悉JavaFX事件处理机制。

我正在开发一个GUI,我想要一个按钮在点击时以及按下Enter键时执行相同的功能。

我可以执行以下操作吗?

public class ButtonHandler implements EventHandler<ActionEvent>
{
somefunction();
}

然后将它用于KeyEvent&amp;的MouseEvent

button.setOnMouseClicked(new ButtonHandler);
button.setOnKeyPressed(new ButtonHandler);

1 个答案:

答案 0 :(得分:1)

只要您不需要特定事件的任何信息(例如鼠标坐标或按下的键),您就可以

EventHandler<Event> handler = event -> {
    // handler code here...
};

然后

button.addEventHandler(MouseEvent.MOUSE_CLICKED, handler);
button.addEventHandler(KeyEvent.KEY_PRESSED, handler);

当然,您也可以将实际工作委托给常规方法:

button.setOnMouseClicked(e -> {
    doHandle();
});
button.setOnKeyPressed(e -> {
    doHandle();
});

// ...

private void doHandle() {
    // handle event here...
}