本章我们来讨论文本域(TextFiled)的使用,文本域可以接受用户的输入。文本域还有另一种形式叫做密码域PasswordField
,继承自TextInput类。下图是一个典型的文本域:
Label label1 = new Label("Name:"); TextField textField = new TextField (); HBox hb = new HBox(); hb.getChildren().addAll(label1, textField); hb.setSpacing(10);
你可以像上面那样创建一个空的文本域,当然你也可以为这个文本域附上特殊的值。我们可以直接用带参数的构造方法来指定文本域的值:TextField(“hello world”);.另外我们可以在任何时候获得文本域的值,通过调用getText方法来获得文本域的值。
我们还可以调用setPrefColumnCount方法来设置文本域的大小。
最常见的情况就是表单域,处理用户输入的数据。
package com.chu.button; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class TextFieldTest extends Application { @Override public void start(Stage primaryStage) throws Exception { //Creating a GridPane container GridPane grid = new GridPane(); grid.setPadding(new Insets(10, 10, 10, 10)); grid.setVgap(5); grid.setHgap(5); //Defining the Name text field final TextField name = new TextField(); name.setPromptText("Enter your first name."); GridPane.setConstraints(name, 0, 0); grid.getChildren().add(name); //Defining the Last Name text field final TextField lastName = new TextField(); lastName.setPromptText("Enter your last name."); GridPane.setConstraints(lastName, 0, 1); grid.getChildren().add(lastName); //Defining the Comment text field final TextField comment = new TextField(); comment.setPromptText("Enter your comment."); GridPane.setConstraints(comment, 0, 2); grid.getChildren().add(comment); //Defining the Submit button Button submit = new Button("Submit"); GridPane.setConstraints(submit, 1, 0); grid.getChildren().add(submit); //Defining the Clear button Button clear = new Button("Clear"); GridPane.setConstraints(clear, 1, 1); grid.getChildren().add(clear); //Adding a Label final Label label = new Label(); GridPane.setConstraints(label, 0, 3); GridPane.setColumnSpan(label, 2); grid.getChildren().add(label); Scene s = new Scene(grid,500,300); primaryStage.setScene(s); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
运行如下图所示:
添加如下代码
submit.setOnAction((ActionEvent e) -> { if ( (comment.getText() != null && !comment.getText().isEmpty()) ) { label.setText(name.getText() + " " + lastName.getText() + ", " + "thank you for your comment!"); } else { label.setText("You have not left a comment."); } }); clear.setOnAction((ActionEvent e) -> { name.clear(); lastName.clear(); comment.clear(); label.setText(null); });
运行如下图所示:
一些有用的方法:
Copy():复制文本域中选中的内容。
Cut():剪切文本域中选中的内容。
SelectAll:选中文本域中所有的内容。
Paste:粘贴复制的内容。