2017-05-01 2 views

Répondre

2

Selon ce code, pourquoi ne pas créer une fonction d'action commune et vous l'appelez de tous les auditeurs?

private void listeners() { 

    button1.setOnAction(e->{ 
     doAction(); 
    }); 

    keyboardShortcut.setOnAction(e->{ 
     doAction(); 
    }); 

} 

void doAction() { 
    System.out.println("Some Action"); 
} 
+0

J'ai trouvé une réponse à mon problème. J'appelle button1.fire() du raccourci clavier. La raison pour laquelle je ne fais pas plusieurs doActions() est parce que doAction est un espace réservé pour beaucoup de lignes de code, et si je peux référencer le code d'action du bouton depuis 1 ligne dans le raccourci, c'est préférable – Peaser

+2

toute différence. Honnêtement, je pense que c'est préférable la solution que j'ai proposée si vous souhaitez enregistrer les actions et comment elles ont été déclenchées. Si vous ajoutez une ligne de journalisation avant le 'doAction()', avec votre méthode, vous recevrez d'abord une "action au clavier" puis une "action de bouton". Quoi qu'il en soit, les deux solutions sont valables. –

+0

Les événements de chaînage peuvent entraîner des bogues bizarres si vous créez une boucle. S'il y a plusieurs personnes travaillant sur le projet, les chances que cela se produise sont assez élevées, car la relation entre les événements n'est pas évidente et ne peut pas être facilement suivie. –

0

Je viens de découvrir que vous faites cela en appelant button1.fire();