Несколько кнопок Java в один и тот же обработчик
Я пытаюсь сделать простой калькулятор с 20 кнопками и одним обработчиком. В Java я могу использовать оператор if с event.getSource () в ActionPerformed, чтобы проверить, какая кнопка нажата, но она не работает с обработчиком в javafx. Возможно ли в javafx, что все кнопки имеют один обработчик? (Я не хочу использовать Java 8 Lambdas.) В прошлый раз я пытался с setId / getId, но это тоже не работает (для меня).
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);
}
}