Hướng dẫn sử dụng JavaFX TextArea
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- JavaFX TextArea

JavaFX TextArea là một thành phần cho phép người dùng có thể nhập vào văn bản trên nhiều dòng, và có thể đọc được bởi ứng dụng.
// Tạo đối tượng TextArea
TextArea textArea = new TextArea();

// Set text
textArea.setText("Hello");

// Get text
String text= textArea.getText();

2- Ví dụ với TextArea

TextAreaDemo.java
package org.o7planning.javafx.textarea;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TextAreaDemo extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

         

        VBox root = new VBox();
        root.setPadding(new Insets(10));
        root.setSpacing(5);
       
        root.getChildren().add(new Label("Enter message:"));

        TextArea textArea = new TextArea();
        root.getChildren().add(textArea);

        Scene scene = new Scene(root, 320, 150);

        primaryStage.setTitle("JavaFX TextArea (o7planning.org)");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }

}

3- Nối và bôi đen văn bản

Với TextArea bạn có thể nối thêm các đoạn text vào phía cuối của văn bản hiện thời.
// Nối thêm đoạn text vào cuối văn bản hiện thời.

textArea.appendText("This is a text");
Và bôi đen một đoạn văn bản:
// Sau khi TextArea sẵn sàng, bôi đen một đoạn text.
Platform.runLater(new Runnable() {
   @Override
   public void run() {
       textArea.selectRange(6, 9);
   }
});
Xem ví dụ đầy đủ:
TextAreaDemo2.java
package org.o7planning.javafx.textarea;

import java.util.Date;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TextAreaDemo2 extends Application {

   private int i = 0;

   @Override
   public void start(Stage primaryStage) throws Exception {

       VBox root = new VBox();
       root.setPadding(new Insets(10));
       root.setSpacing(5);

       // Label
       Label label = new Label("Enter message:");

       // TextArea
       TextArea textArea = new TextArea();
       textArea.setText("Hello\nHow Are You?\n");

       textArea.setStyle("-fx-highlight-fill: lightgray; -fx-highlight-text-fill: firebrick; -fx-font-size: 12px;");
 
       // Sau khi TextArea sẵn sàng, bôi đen một đoạn text.
       Platform.runLater(new Runnable() {
           @Override
           public void run() {
               textArea.selectRange(6, 9);
           }
       });
 
       // Chứa các button.
       HBox buttonBar = new HBox();

 
       // Button để nối text.
       Button buttonAppend = new Button("Append Text");
 
       // Sự kiện có hành động với Button.
       buttonAppend.setOnAction(new EventHandler<ActionEvent>() {

           @Override
           public void handle(ActionEvent event) {
               i++;
               textArea.appendText(i + " : " + new Date().toString());
               textArea.appendText("\n");
           }
       });

       Button buttonSelectText = new Button("Select Text");
 
       // Sự kiện có hành động với Button.
       buttonSelectText.setOnAction(new EventHandler<ActionEvent>() {

           @Override
           public void handle(ActionEvent event) {
  
               // Vị trí con trỏ
               int from = textArea.getCaretPosition();
               int to = textArea.getLength() / 2;
               textArea.selectRange(from, to);
           }

       });

       buttonBar.getChildren().addAll(buttonAppend, buttonSelectText);

       root.getChildren().addAll(label, textArea, buttonBar);

       Scene scene = new Scene(root, 320, 150);

       primaryStage.setTitle("JavaFX TextArea (o7planning.org)");
       primaryStage.setScene(scene);
       primaryStage.show();
   }

   public static void main(String[] args) {
       Application.launch(args);
   }

}