我需要在控制台(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
*/
}
答案 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: {
…
}
});
任何一个应该适合你。第一种方法更短,更容易阅读,但如果您计划动态添加和删除处理程序,则第二种方式更灵活。