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