button.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
label.setText("Accepted");
}
});
Dans le code ci-dessus, nous définissons ce qui se passera lorsque nous appuierons sur le bouton. Tout cela est bien, mais je veux créer un nouvel ActionListener, puis l'ajouter à mon bouton. Normalement, dans JButton, je peux simplement ajouter ActionListener comme ceci:
button.addActionListener(someControllerClass.createButtonListener());
Dans le code ci-dessus, createButtonListener () renvoie ActionListener.
Ma question est: Quel est l'équivalent de JButton addActionListener?
Je pense que c'est comme ça que je dois faire. Création du gestionnaire:
public EventHandler<Event> createSolButtonHandler()
{
btnSolHandler = new EventHandler<Event>() {
@Override
public void handle(Event event) {
System.out.println("Pressed!");
biddingHelperFrame.getBtnSag().setVisible(false);
}
};
return btnSolHandler;
}
Ajout d'un gestionnaire au bouton:
btnSol.addEventHandler(MouseEvent.MOUSE_CLICKED, biddingHelperFrameController.createSolButtonHandler());
Si vous voulez par exemple réutiliser un EventHandler
, le définir comme décrit dans Documentation JavaFX comme:
EventHandler<ActionEvent> buttonHandler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
label.setText("Accepted");
event.consume();
}
};
Vous pouvez maintenant ajouter votre buttonHandler
défini au onAction
de votre bouton via:
button.setOnAction(buttonHandler);
Et en citant la documentation fournissant l'option de suppression pour être complet:
Pour supprimer un gestionnaire d'événements qui a été enregistré par une méthode pratique, passez null à la méthode pratique, par exemple,
node1.setOnMouseDragged(null).
Résultat pour vous en:
button.setOnAction(null)
La documentation fournit en outre quelques exemples sur la façon d'ajouter un gestionnaire pour des événements spécifiques - c'est une bonne lecture.
Juste la même approche, mais plus facile avec les expressions lambda:
buttonSave.setOnAction(event -> buttonSaveClicked());