JavaFX |文本域
TextField 类是 JavaFX 包的一部分。它是一个允许用户输入一行无格式文本的组件,它不允许多行输入它只允许用户输入单行文本。然后可以根据需要使用文本。
TextField 类的构造函数:
- TextField() :创建一个带有空文本内容的新 TextField
- TextField(String s) :创建一个带有初始文本的新 TextField 。
常用方法:
method | explanation |
---|---|
setPrefColumnCount(int v) | Sets the value of the property prefColumnCount. |
setOnAction(EventHandler value) | Sets the value of the property onAction. |
setAlignment(Pos v) | Sets the value of the property alignment. |
prefColumnCountProperty() | The preferred number of text columns |
onActionProperty() | The action handler associated with this text field, or null if no action handler is assigned. |
getPrefColumnCount() | Gets the value of the property prefColumnCount. |
getOnAction() | Gets the value of the property onAction. |
getAlignment() | Gets the value of the property alignment. |
getCharacters() | Returns the character sequence backing the text field’s content. |
下面的程序说明了文本字段的使用:
- 用于创建 TextField 并将其添加到 stage 的Java程序:该程序创建一个由名称 b 指示的 TextField。 TextField 将在场景中创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)中。函数setTitle() 用于为舞台提供标题。然后创建一个标题窗格,调用 addChildren() 方法将 TextField 附加到场景中,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
// Java program to create a textfield and add it to stage import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Textfield extends Application { // launch the application public void start(Stage s) { // set title for the stage s.setTitle("creating TextField"); // create a textfield TextField b = new TextField(); // create a stack pane StackPane r = new StackPane(); // add textfield r.getChildren().add(b); // create a scene Scene sc = new Scene(r, 200, 200); // set the scene s.setScene(sc); s.show(); } public static void main(String args[]) { // launch the application launch(args); } }
输出:
- Java程序使用初始文本创建一个 TextField 并添加一个事件处理程序:该程序创建一个由名称 b 指示的 TextField。我们将创建一个在按下回车键时显示文本的标签。我们将创建一个事件处理程序来处理文本字段的事件,并且事件处理程序将使用 setOnAction() 方法添加到文本字段。 TextField 将在场景中创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)中。函数setTitle() 用于为舞台提供标题。然后创建一个标题窗格,调用 addChildren() 方法在场景中附加 TextField 和标签,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
// Java program to create a textfield and add a // event handler to handle the event of textfield import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Label; import javafx.stage.Stage; public class Textfield_1 extends Application { // launch the application public void start(Stage s) { // set title for the stage s.setTitle("creating textfield"); // create a textfield TextField b = new TextField("initial text"); // create a tile pane TilePane r = new TilePane(); // create a label Label l = new Label("no text"); // action event EventHandler
event = new EventHandler () { public void handle(ActionEvent e) { l.setText(b.getText()); } }; // when enter is pressed b.setOnAction(event); // add textfield r.getChildren().add(b); r.getChildren().add(l); // create a scene Scene sc = new Scene(r, 200, 200); // set the scene s.setScene(sc); s.show(); } public static void main(String args[]) { // launch the application launch(args); } } 输出:
- Java程序创建一个带有初始文本的文本字段并添加一个事件处理程序:该程序创建一个由名称 b 指示的 TextField。我们将通过使用字符串调用其构造函数来设置初始文本,并使用 setPrefColumnCount() 方法设置首选列数。我们将创建一个标签,该标签将在按下回车键时显示文本。我们将创建一个事件处理程序来处理 Text 字段的事件,并且使用 setOnAction() 方法将事件处理程序添加到 Textfield。 TextField 将在场景中创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)中。函数setTitle() 用于为舞台提供标题。然后创建一个标题窗格,调用 addChildren() 方法在场景中附加 TextField 和标签,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
// Java program to create a textfield with a initial text // and preferred column count and add a event handler to // handle the event of textfield import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Label; import javafx.stage.Stage; public class TextField_2 extends Application { // launch the application public void start(Stage s) { // set title for the stage s.setTitle("creating textfield"); // create a textfield TextField b = new TextField("initial text"); // set preffered column count b.setPrefColumnCount(7); // create a tile pane TilePane r = new TilePane(); // create a label Label l = new Label("no text"); // action event EventHandler
event = new EventHandler () { public void handle(ActionEvent e) { l.setText(b.getText()); } }; // when enter is pressed b.setOnAction(event); // add textfield r.getChildren().add(b); r.getChildren().add(l); // create a scene Scene sc = new Scene(r, 200, 200); // set the scene s.setScene(sc); s.show(); } public static void main(String args[]) { // launch the application launch(args); } } 输出:
- Java程序创建一个具有初始文本和文本中心对齐的 TextField 并添加一个事件处理程序:该程序创建一个由名称 b 指示的 TextField。我们将通过使用字符串调用其构造函数来设置初始文本并设置对齐方式使用 setAlignment() 方法。我们将创建一个标签,当按下回车键时将显示文本。我们将创建一个事件处理程序来处理文本字段的事件,并且事件处理程序将使用 setOnAction 添加到文本字段() 方法。 TextField 将在场景中创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)中。函数setTitle() 用于为舞台提供标题。然后创建一个标题窗格,调用 addChildren() 方法在场景中附加 TextField 和标签,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
// Java program to create a textfield with a initial text and center alignment of text // and add a event handler to handle the event of textfield import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Label; import javafx.stage.Stage; import javafx.geometry.*; public class TextField_4 extends Application { // launch the application public void start(Stage s) { // set title for the stage s.setTitle("creating textfield"); // create a textfield TextField b = new TextField("initial text"); // set alignment of text b.setAlignment(Pos.CENTER); // create a tile pane TilePane r = new TilePane(); // create a label Label l = new Label("no text"); // action event EventHandler
event = new EventHandler () { public void handle(ActionEvent e) { l.setText(b.getText()); } }; // when enter is pressed b.setOnAction(event); // add textfield r.getChildren().add(b); r.getChildren().add(l); // create a scene Scene sc = new Scene(r, 200, 200); // set the scene s.setScene(sc); s.show(); } public static void main(String args[]) { // launch the application launch(args); } } 输出:
注意:以上程序可能无法在在线 IDE 中运行,请使用离线编译器。
参考:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextField.html