我是Java编程的新手,所以这个问题对于许多人来说可能是愚蠢的。我正在尝试使自己适应JavaFX事件处理机制。

我正在开发一个GUI,我希望其中一个按钮在单击时以及在按下Enter键时也能执行相同的功能。

我可以做以下事情吗?

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


然后将其用于KeyEvent和MouseEvent

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

最佳答案

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

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...
}

10-05 22:55