如何制作处理事件的方法?

时间:2016-05-15 12:50:45

标签: java javafx

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

这是我的代码。如你所见,我有两个EventHandler。一个检查输入是否被按下,另一个检查是否按下了按钮。我的目标是创建一个方法,只要这两个EventHandler中的一个激活它,就需要从TextFields输入。

在这个例子中,我只有一个TextField,但在我的应用程序中我有很多,所以如果我在两个EventHandlers中做同样的事情,我会加倍我的代码。我想有选项可以制作出适合我的方法。

1 个答案:

答案 0 :(得分:1)

  

我的目标是创建一个方法,每当这两个EventHandler中的一个激活它时,就从TextFields获取输入。

     

在这个例子中我只有一个TextField但在我的应用程序中我有很多

如果目标是方法,那么制作方法。如果您有许多文本字段并希望在任何句柄方法中对它们执行类似的操作,请使用参数。

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

代码中的任何地方(例如,在事件处理程序中)您现在可以调用

printTextField(tf);