2014-09-19 5 views
0

J'ai la classe fxml et controller. En classe de contrôleur, j'ai la méthode someAction() et en fxml j'ai mis #someAction comme onAction pour certains boutons. Maintenant, je veux créer le bouton pas dans fxml mais dynamiquement à partir du code java comme button = new Button(). Je charge toujours fxml et j'ai toujours ce contrôleur avec la méthode someAction(). Comment puis-je définir someAction() comme onAction pour mon bouton? De code java, j'ai trouvé seulement setOnAction(EventHandler<ActionEvent> eh). Existe-t-il un moyen de spécifier onAction dans un style similaire à fxml, juste en indiquant le nom de la méthode dans la classe du contrôleur?JavaFX ajoute dynamiquement des boutons

Répondre

2

L'une des approches peuvent être:

private EventHandler<ActionEvent> yourHandler = new EventHandler<>() { 
    public void handle(ActionEvent event) { 
     // your logic 
    } 
}; 

puis

button.setOnAction(yourHandler); 

et

public void someAction(ActionEvent event) { 
    yourHandler.handle(null); 
} 

Ou de la même manière, définir une méthode de logique métier et l'appeler en deux différents gestionnaires d'événements d'action.

+0

La deuxième approche semble plus pratique :) – ItachiUchiha

+0

@ItachiUchiha oui vous avez raison. Je veux juste aussi montrer l'utilisation de eventhandler ici. –

Questions connexes