为什么不在NetBeans控制台中打印用户输入? JavaFX的

时间:2016-02-26 20:23:49

标签: java javafx

我需要在控制台(Javafx NetBeans)中打印用户输入。

这是我的代码,奇怪的是只打印标签名称:“地址”。早些时候,当我只有2个字段时,它只打印最后一个条目,按下按钮时用户不会打印第一个条目。

如何在控制台中打印用户的所有输入?

    package customerentry2;
import javafx.geometry.Insets;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


/**
 *
 * @author 718358
 */

public class CustomerEntry2 extends Application {
    Stage window;
    Scene scene;
    Button button;

    public static void main(String[] args) {
        launch(args);
    }

       @Override
    public void start(Stage primaryStage) throws Exception 
    {
        window = primaryStage;
        window.setTitle("Customer Entry");

        Label nameLabel = new Label("First Name: ");
        Label nameLabel2 = new Label("Last Name: ");
        Label addressInput = new Label("Address: ");
        TextField nameInput = new TextField();
        TextField nameInput2 = new TextField();
        TextField addressInput3 = new TextField();
        button = new Button("Save");
        button.setOnAction(e -> System.out.println(nameInput.getText()));
        button.setOnAction(e -> System.out.println(nameInput2.getText()));
        button.setOnAction(e -> System.out.println(addressInput3.getText()));
        //Layout
        VBox layout = new VBox(10);
        layout.setPadding(new Insets(20, 20, 20, 20));
        layout.getChildren().addAll(nameLabel, nameInput, nameLabel2, nameInput2, addressInput, addressInput3,  button);

        scene = new Scene(layout, 300, 250);
        window.setScene(scene);
        window.show();

    }

    /**
     * @param args the command line arguments
     */


}

1 个答案:

答案 0 :(得分:0)

问题出现了,因为每次拨打setOnAction时,都会替换现有的EventHandler,而不是添加额外的println。有两种方法可以解决这个问题。

您可以在一个EventHandler中处理所有三个button.setOnAction(e -> {System.out.println(nameInput.getText()); System.out.println(nameInput2.getText())); System.out.println(addressInput3.getText()); }); ,如下所示:

addEventHandler

或者您可以使用EventHandler向按钮添加更多button.addEventHandler(ActionEvent.ACTION, (ActionEvent e) -> System.out.println(nameInput.getText())); button.addEventHandler(ActionEvent.ACTION, (ActionEvent e) -> System.out.println(nameInput2.getText())); button.addEventHandler(ActionEvent.ACTION, (ActionEvent e) -> System.out.println(addressInput3.getText())); s而不替换现有按钮。这看起来像这样:

System.config({
  map: {
     'ng2-charts': 'node_modules/ng2-charts'
  },
  packages: {
    …
  }
});

任何一个应该适合你。第一种方法更短,更容易阅读,但如果您计划动态添加和删除处理程序,则第二种方式更灵活。