2016-02-26 96 views
0

我需要在我的控制台(Javafx NetBeans)中打印用户输入。为什么不在NetBeans控制台中打印用户输入? Javafx

这是我的代码,奇怪的是只打印标签名称:“地址”。之前,当我只有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 
    */ 


} 
+0

您的'Label'被命名为'addressInput',并且您执行'addressInput.getText()'。 'TextField'被命名为'addressInput3'。 – resueman

+0

@resueman:谢谢!我编辑了代码,现在正在打印第三个文本字段的输入,但仍然没有打印来自前两个字段的输入,如何打印来自所有3个字段的输入? – 4201

回答

0

的问题发生,因为每次你打电话setOnAction取代现有EventHandler,而不是添加额外的一个。有两种方法可以解决这个问题。

您可以照顾三个println S在一个EventHandler,像这样:

button.setOnAction(e -> {System.out.println(nameInput.getText()); 
         System.out.println(nameInput2.getText())); 
         System.out.println(addressInput3.getText()); 
         }); 

或者您可以使用addEventHandlerEventHandler s添加到该按钮,无需更换现有的。这看起来像这样:

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

任何一个人都应该为你工作。第一种方法稍短且易于阅读,但如果您计划动态添加和删除处理程序,则第二种方法更加灵活。

+0

非常感谢!这解决了这个问题。祝你有美好的一天! – 4201

相关问题