ActionEvent get source de bouton de JavaFX
J'ai environ 10 boutons qui vont être envoyés à la même méthode. Je veux que la méthode pour identifier la source. Si la méthode que connaît le bouton "terminé", a évoqué cette fonction. Ensuite, je peux ajouter un commutateur cas de si l'instruction pour les traiter en conséquence. C'est ce que j'ai essayé
//Call:
btnDone.setOnAction(e -> test(e));
public void test(ActionEvent e) {
System.out.println("Action 1: " + e.getTarget());
System.out.println("Action 2: " + e.getSource());
System.out.println("Action 3: " + e.getEventType());
System.out.println("Action 4: " + e.getClass());
}
Résultat De Sortie:
Action 1: Button@27099741[styleClass=button]'Done'
Action 2: Button@27099741[styleClass=button]'Done'
Action 3: ACTION
Action 4: class javafx.event.ActionEvent
Fait est le texte sur le bouton. Comme vous pouvez le voir, je pouvais utiliser les e.getTarget()
et/ou e.getSource()
puis je vais avoir de sous-chaîne, de sorte que la "Terminé" s'affiche. Est-il un autre moyen pour obtenir la chaîne de caractères dans l'apostrophe au lieu de sous-chaîne.
Mise à JOUR: j'ai essayé en passant Bouton et cela fonctionne, mais je veux encore
savoir une solution à l'aide de ActionEvent.
//Call:
btnDone.setOnAction(e -> test(btnDone));
public void test(Button e) {
System.out.println("Action 1: " + e.getText());
}
De sortie est Action 1: Done
Vous devez vous connecter pour publier un commentaire.
En général, je préfère utiliser une méthode différente pour chaque bouton. C'est généralement une très mauvaise idée de s'appuyer sur le texte dans le bouton (par exemple, ce qui va arriver à la logique si vous souhaitez internationaliser votre application?).
Si vous voulez vraiment obtenir le texte dans le bouton (et encore, je dois souligner que vous ne voulez vraiment pas à le faire), il suffit d'utiliser un baissés:
setUserData
etgetProperties