javafX初探(文本域)

本章我们来讨论文本域(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方法来设置文本域的大小。

使用文本域构建UI

最常见的情况就是表单域,处理用户输入的数据。

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

}


 

运行如下图所示:

javafX初探(文本域)_第1张图片

处理文本域数据

添加如下代码

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


 

运行如下图所示:

javafX初探(文本域)_第2张图片

 

 

一些有用的方法:

Copy():复制文本域中选中的内容。

Cut():剪切文本域中选中的内容。

SelectAll:选中文本域中所有的内容。

Paste:粘贴复制的内容。

 

你可能感兴趣的:(java,JavaFX,图形,多媒体)