javafx mehrere Tasten zur gleichen handler

Ich versuche einen einfachen Taschenrechner mit 20 Tasten und ein handler. In java kann ich verwenden 'if' - Anweisung mit Fall.getSource() in der ActionPerformed zu überprüfen, welche Taste gedrückt wird, aber es funktioniert nicht mit handler in javafx. Ist es möglich in javafx dass alle Tasten hat ein handler? (Ich will nicht mit java 8 Lambdas.)
Letztes mal habe ich versucht mit setId/getId, aber es trotzdem nicht funktioniert (für mich).

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);
    }

}

Dein code funktioniert nur, wenn ich es versuchte (obwohl es viel einfachere Möglichkeiten, es zu tun). Es ist in der Regel viel besser ist, um verschiedene Handler für verschiedene Steuerelemente, obwohl; warum wollen Sie es zu tun auf diese Weise?
Oh! Wirklich!!!! Ich wusste nicht möchten, fügen Sie den gesamten code und schreiben einfach hier die Essenz. Das ist lustig. Danke für die Antwort!
Ich dachte, der code ist sauberer, wenn ich einen handler, ich wusste nicht, dass Nachteil.
Für kürzeren code, die Sie verwenden können Lambda-Ausdrücke wie b0.setOnAction(e -> System.out.println("b0 pressed"))

InformationsquelleAutor toge | 2014-08-20

Schreibe einen Kommentar