I'm trying to learn JavaFX event handling. I found that we can register event by two ways.
One is convenience method like setOnAction(EventHandler), setOnMouseClicked(EventHandler)
The second is by using addEventHandler(MouseEvent.MOUSE_CLICKED, EventHandler)
But I'm confused what is the difference between them? how decide which one will be suitable?
I have tested and registered two event handler using both methods and both are working fine.
Button btn = new Button("Click Me One!");
btn.setOnMouseEntered(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent e){
System.out.println("Mouse Entered on Click Me One");
}
});
btn.setOnMouseExited(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent e){
System.out.println("Mouse Exited from Click Me One");
}
});
Button btn2 = new Button("Click Me Two!");
btn2.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent e){
System.out.println("Mouse Entered on Click Me Two");
}
});
btn2.addEventHandler(MouseEvent.MOUSE_EXITED, new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent e){
System.out.println("Mouse Exited from Click Me Two");
}
});
Here is the output after checking.
Mouse Entered on Click Me One
Mouse Exited from Click Me One
Mouse Entered on Click Me Two
Mouse Exited from Click Me Two
I also checked by defining event handler.
Button btn2 = new Button("Click Me Two!");
// Define an event handler
EventHandler<InputEvent> handler = new EventHandler<InputEvent>() {
public void handle(InputEvent event) {
System.out.println("Handling event " + event.getEventType());
}
};
btn2.addEventHandler(MouseEvent.MOUSE_ENTERED, handler);
btn2.addEventHandler(MouseEvent.MOUSE_EXITED, handler);
btn2.setOnMouseEntered(handler);
btn2.setOnMouseExited(handler);
Output:
Handling event MOUSE_ENTERED
Handling event MOUSE_ENTERED
Handling event MOUSE_EXITED
Handling event MOUSE_EXITED
Aucun commentaire:
Enregistrer un commentaire