Events 如何在javafx中处理两个不同的enter事件?
我有窗格和文本字段。我在窗格和文本字段中使用事件处理程序处理了enter事件。我已经编写了一组代码,以便在按下Pane enter和文本字段enter event时执行。如何在处理另一个事件时停止一个事件?(注意:我的文本字段在窗格中)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
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); }
}