javafx plusieurs boutons à la même gestionnaire

J'essaie de faire une simple calculatrice avec 20 boutons et un gestionnaire. En java, je peux utiliser des "si", déclaration de l'événement.getSource() dans ActionPerformed pour vérifier quel bouton est pressé, mais il ne fonctionne pas avec les gestionnaires de javafx. Est-il possible dans javafx que tous les boutons a un gestionnaire? (Je ne veux pas utiliser java 8 Lambdas.)
La dernière fois que j'ai essayé avec setId/getId mais elle même ne fonctionne pas (pour moi).

public class Calculator extends Application {
public Button b0, b1;
@Override
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
b0 = new Button("0");
b0.setId("0");
b0.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
grid.add(b0, 0, 1);
b0.setOnAction(myHandler);
b1 = new Button("1");
b1.setId("1");
b1.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
grid.add(b1, 0, 0);
b1.setOnAction(myHandler);
Scene scene = new Scene(grid, 365, 300);
scene.getStylesheets().add
(Calculator.class.getResource("calculator.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
final EventHandler<ActionEvent> myHandler = new EventHandler<ActionEvent>(){
@Override
public void handle(final ActionEvent event) {
Button x = (Button) event.getSource();
if (x.getId().equals(b0.getId()))
System.out.println("0");
else if(x.getId().equals(b1.getId()))
System.out.println("1");
}
};
public static void main(String[] args) {
launch(args);
}

}

Votre code a très bien fonctionné quand je l'ai essayé (bien qu'il existe beaucoup de façons plus faciles de le faire). Il est généralement beaucoup mieux d'utiliser des gestionnaires différents pour les différents contrôles, bien; pourquoi voulez-vous faire de cette façon?
Oh! Vraiment! Je ne voulais pas coller la totalité du code, et il suffit d'écrire ici l'essence. Que c'est drôle. Merci pour la réponse!
Je pensais que le code est plus propre si j'utilise un gestionnaire, je ne savais pas que des désavantages.
Pour de plus courtes code, vous pouvez utiliser des Expressions Lambda comme b0.setOnAction(e -> System.out.println("b0 pressed"))

OriginalL'auteur toge | 2014-08-20