有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在JavaFX中对MouseeEvent和KeyEvent使用相同的EventHandler?

我是Java编程新手,所以这里的很多人可能觉得这个问题很愚蠢。我试图让自己熟悉JavaFX事件处理机制

我正在开发一个图形用户界面,在这里我想要一个按钮来执行相同的功能,当它被点击时,也当回车键被按下时

我能做以下事情吗

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

然后将其用于KeyEvent和;鼠标孔

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

共 (1) 个答案

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