web-dev-qa-db-fra.com

Javafx ajoutant ActionListener au bouton

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?

7
MertG

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());
1
MertG

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.

7
SSchuette

Juste la même approche, mais plus facile avec les expressions lambda:

buttonSave.setOnAction(event -> buttonSaveClicked());
0
D4NT3