Reputation: 91
I am planning to create a single EventHandler Class that will handle all Types of events for all my controls in my JavaFX class.
For example, I added my custom event handler class to handle the Action Event the following way and it just works fine:
userNameText.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
cmbBox.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
btn.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
Here is my custome event handler class code:
public class DataChangeHandler implements EventHandler<ActionEvent> {
public void handle(ActionEvent event) {
System.out.println("My Very Own Private Button Handler");
}
}
But when I try to change one of the addEventHandlers to MouseEvent and modify the main EventHandler class the following way, it shows an error "The Interface eventhandler cannot be implemented more than once with different arguements":
userNameText.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
cmbBox.addEventHandler(MouseEvent.CLICKED, new DataChangeHandler());
btn.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
public class DataChangeHandler implements EventHandler<ActionEvent>, EventHandler<MouseEvent> {
public void handle(ActionEvent event) {
System.out.println("My Very Own Private Button Handler - ACTIONEVENT");
}
@Override
public void handle(MouseEvent arg0) {
System.out.println("My Very Own Private Button Handler - MOUSEEVENT");
}
}
Is there any other way to achieve this? Please help. Thanks in advance.
Upvotes: 3
Views: 10318
Reputation: 49215
Try this
public class DataChangeHandler implements EventHandler<Event>{
@Override
public void handle(Event event) {
System.out.println("My Very Own Private Handler For All Kind Of Events");
}
}
Upvotes: 7