JavaFX - 文本区域



TextArea 控件是一个图形用户界面组件,允许用户输入和显示多行纯文本。它主要用于收集信息,例如评论、反馈和描述。在下图中,我们可以看到一个带有预定义文本的文本区域:

JavaFX Textarea

在 JavaFX 中创建 TextArea

在 JavaFX 中,文本区域由名为 TextArea 的类表示,它是 javafx.scene.control 包的一部分。通过实例化此类,我们可以在 JavaFX 中创建一个文本区域。其构造函数如下:

  • TextArea() - 这是默认构造函数,它创建一个没有任何文本的文本区域。

  • TextArea(String str) - 它使用预定义文本创建一个新的文本区域。

JavaFX TextArea 的属性

创建 TextArea 后,可以使用其属性自定义它以增强其外观和行为。例如,我们可以分别使用 prefRowCountprefColumnCount 属性设置首选行数和列数。此外,我们还可以使用 wrapText 属性启用或禁用文本换行。

TextArea 还支持在组件中没有文本时显示提示文本。这是一种在不使用工具提示或标签的情况下告知用户文本区域中预期内容的有用方法。可以使用 setPromptText() 方法或 promptText 属性设置提示文本。

示例

在以下示例中,我们将创建一个 JavaFX 应用程序中的 TextArea。将此代码保存在名为 JavafxTextarea.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.geometry.Pos;
public class JavafxTextarea extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a Label
      Label label = new Label("Try typing Text in the box...");
      // Creating a TextArea with fixed size
      TextArea txtArea = new TextArea();
      // Setting the preferred size
      txtArea.setPrefSize(200, 200); 
      // Enabling text wraps property
      txtArea.setWrapText(true);
      // Create a HBox and add the Label and TextArea to it
      HBox box = new HBox(label, txtArea);
      box.setAlignment(Pos.BASELINE_CENTER);
      box.setSpacing(10);
      // Create a Scene and set it to the Stage
      Scene scene = new Scene(box, 400, 300);
      stage.setScene(scene);
      // Set the title of the Stage
      stage.setTitle("TextArea in JavaFX");
      // Display the Stage
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

要从命令提示符编译和执行保存的 Java 文件,请使用以下命令:

javac --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.media JavafxTextarea.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.media JavafxTextarea

输出

执行上述代码后,将生成以下输出:

Textarea Output

使用其参数化构造函数创建 TextArea

TextArea 是通过使用其默认构造函数或参数化构造函数创建的。与默认构造函数相比,使用参数化构造函数的一个好处是我们可以提供额外的文本以指示预期的输入。

示例

以下 JavaFX 代码演示了如何在应用程序中使用 TextArea 类的参数化构造函数来创建文本区域。将此代码保存在名为 TextareaDemo.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.layout.HBox;
public class TextareaDemo extends Application {
   @Override
   public void start(Stage stage) {
      // Create a TextArea
      TextArea txtArea = new TextArea("Try typing Text in the box...");
      // Create a Button to clear the TextArea
      Button clearButton = new Button("Clear Text");
      // setting action
      clearButton.setOnAction(e -> txtArea.clear());
      // Create a VBox and add the TextArea and Button to it
      VBox vbox = new VBox(txtArea, clearButton); 
      vbox.setSpacing(10);
      // Apply CSS styling
      vbox.setStyle("-fx-padding: 10;" +
         "-fx-border-style: solid inside;" +
         "-fx-border-width: 2;" +
         "-fx-border-insets: 5;" +
         "-fx-border-radius: 5;" +
         "-fx-border-color: blue;");
      // Create a Scene and set it to the Stage
      Scene scene = new Scene(vbox, 400, 300);
      stage.setScene(scene);
      // Set the title of the Stage
      stage.setTitle("TextArea in JavaFX");
      // Display the Stage
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

要从命令提示符编译和执行保存的 Java 文件,请使用以下命令:

javac --module-path %PATH_TO_FX% --add-modules javafx.controls TextareaDemo.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls TextareaDemo

输出

执行上述代码后,将生成以下输出。当我们单击“清除文本”按钮时,文本区域内的所有文本都将被删除。

Textarea Output2
广告