Events 如何在javafx中处理两个不同的enter事件?

Events 如何在javafx中处理两个不同的enter事件?,events,javafx,enter,eventhandler,Events,Javafx,Enter,Eventhandler,我有窗格和文本字段。我在窗格和文本字段中使用事件处理程序处理了enter事件。我已经编写了一组代码,以便在按下Pane enter和文本字段enter event时执行。如何在处理另一个事件时停止一个事件?(注意:我的文本字段在窗格中) capturePane.addEventFilter(KeyEvent.KEY_已发布,新的EventHandler(){ @凌驾 公共无效句柄(KeyEvent事件){ if(event.getCode()==KeyCode.ENTER){ System.ou

我有窗格和文本字段。我在窗格和文本字段中使用事件处理程序处理了enter事件。我已经编写了一组代码,以便在按下Pane enter和文本字段enter event时执行。如何在处理另一个事件时停止一个事件?(注意:我的文本字段在窗格中)

capturePane.addEventFilter(KeyEvent.KEY_已发布,新的EventHandler(){
@凌驾
公共无效句柄(KeyEvent事件){
if(event.getCode()==KeyCode.ENTER){
System.out.println(“捕获窗格输入已单击”);
}
}
});
textfield.addEventFilter(KeyEvent.KEY_已发布,新的EventHandler(){
@凌驾
公共无效句柄(KeyEvent事件){
if(event.getCode()==KeyCode.ENTER){
System.out.println(“单击输入文本字段”);
}
}
});
在我的例子中,两个打印功能同时工作。我只需要做一次手术。如何做到这一点?
提前感谢。

如果您只是试图忽略窗格中的第一个输入,但仍希望在文本字段中看到捕获,则可以执行类似操作。第一个看到输入的是父节点,然后它继续向下,这就是为什么单击enter时会看到两个打印行

public class Main extends Application {

    @Override
    public void start(Stage stage) {
        TextField textField = new TextField();
        textField.addEventFilter(KeyEvent.KEY_RELEASED, event -> {
            if(event.getCode()==KeyCode.ENTER){
                System.out.println("text field enter clicked");
            }
        });

        Pane capturePane = new Pane();
        capturePane.addEventFilter(KeyEvent.KEY_RELEASED, event -> {
            if(event.getTarget()==textField) {
                System.out.println("Caught it and Ignored");
            }
            else if(event.getCode()== KeyCode.ENTER){
                System.out.println("capture pane enter clicked");
                //Do stuff
            }
        });

        capturePane.getChildren().add(textField);

        Scene scene = new Scene(capturePane);
        stage.setScene(scene);
        stage.show();

    }

    public static void main(String[] args) { launch(args); }
}
阅读并根据需要调用
consume()
public class Main extends Application {

    @Override
    public void start(Stage stage) {
        TextField textField = new TextField();
        textField.addEventFilter(KeyEvent.KEY_RELEASED, event -> {
            if(event.getCode()==KeyCode.ENTER){
                System.out.println("text field enter clicked");
            }
        });

        Pane capturePane = new Pane();
        capturePane.addEventFilter(KeyEvent.KEY_RELEASED, event -> {
            if(event.getTarget()==textField) {
                System.out.println("Caught it and Ignored");
            }
            else if(event.getCode()== KeyCode.ENTER){
                System.out.println("capture pane enter clicked");
                //Do stuff
            }
        });

        capturePane.getChildren().add(textField);

        Scene scene = new Scene(capturePane);
        stage.setScene(scene);
        stage.show();

    }

    public static void main(String[] args) { launch(args); }
}