2016-05-15 38 views
0
public void start(Stage primaryStage) throws Exception { 
    // TODO Auto-generated method stub 

    Pane p = new Pane(); 
    p.setPrefSize(400, 300); 
    Button btn = new Button("Submit"); 
    btn.relocate(10, 10); 

    TextField tf = new TextField(); 
    tf.relocate(10, 40); 

    btn.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent event) { 
      text = tf.getText(); 
      System.out.println(text); 
     } 
    }); 

    btn.setOnKeyPressed(new EventHandler<KeyEvent>() { 
     @Override 
     public void handle(KeyEvent event) { 
      if(event.getCode().equals(KeyCode.ENTER)) 
       text = tf.getText(); 

      System.out.println(text); 
     } 
    }); 

    p.getChildren().addAll(btn,tf); 
    Scene sc = new Scene(p); 
    primaryStage.setScene(sc); 
    primaryStage.show(); 
} 

Hier ist mein Code. Wie Sie sehen können, habe ich zwei EventHandler. Eine, die prüft, ob Enter gedrückt wird und die andere, die prüft, ob die Taste gedrückt ist. Mein Ziel ist es, eine Methode zu erstellen und wann immer einer dieser beiden EventHandler aktiviert wird, benötigt er Eingaben von TextFields.Wie macht man eine Methode, die mit Ereignissen umgehen kann?

In diesem Beispiel habe ich nur ein TextField, aber in meiner Anwendung habe ich viele von ihnen, wenn ich das gleiche in zwei EventHandlers mache, verdoppele ich meinen Code. Ich denke, dass es eine Möglichkeit gibt, eine Methode zu machen, die das für mich tun wird.

+0

nennen können, wenn alles, was Sie eine Methode wollen, ist die Wirkung beiden Zuhörer zu tun, dann haben Sie versucht, eine zu machen Methode, die den Text des TextFields abruft und ausdruckt? –

+0

Mögliches Duplikat von [JavaFX, wie man mehrere EventHandler in einem Registrierungsformular kombiniert?] (Http://StackOverflow.com/questions/37236478/javafx-how-to-combine-more-eventhandlers-in-one-registration-form) –

+0

Sie können Ihre alte Frage mit Code bearbeiten. Bitte nicht repost –

Antwort

1

Mein Ziel ist es, eine Methode zu machen, und immer wenn einer dieser beiden EventHandler aktiviert wird, nimmt er Eingaben von TextFields.

In diesem Beispiel habe ich nur einen TextField- aber in meiner Anwendung habe ich viel von ihnen

Wenn das Ziel ein Verfahren ist, dann ein Verfahren machen. Wenn Sie viele Textfelder haben und in einer Handle-Methode eine ähnliche Aktion für sie ausführen möchten, verwenden Sie einen Parameter.

public void printTextField(TextField tf) 
{ 
    System.out.println(tf.getText()); 
} 

überall in Ihrem Code (zB in den Event-Handler) Sie jetzt

printTextField(tf); 
Verwandte Themen