Java: Tạo văn bản (Text)
Giải phóng thời gian, khai phóng năng lực
Cũng giống như các hình dạng khác nhau, bạn cũng có thể tạo một nút văn bản trong JavaFX. Nút văn bản được đại diện bởi lớp có tên Text, thuộc về gói javafx.scene.text.
Lớp này chứa một số thuộc tính để tạo văn bản trong JavaFX và sửa đổi giao diện của nó. Lớp này cũng kế thừa lớp Shape thuộc về gói javafx.scene.shape.
Do đó, ngoài các thuộc tính của văn bản như phông chữ, căn lề, khoảng cách dòng, văn bản, v.v. Nó còn kế thừa các thuộc tính nút hình dạng cơ bản như: strokeFill, stroke, strokeWidth, strokeType, v.v.
Tạo nút văn bản
Vì lớp Text của gói javafx.scene.text đại diện cho nút văn bản trong JavaFX, bạn có thể tạo văn bản bằng cách khởi tạo lớp này như sau:
Text text = new Text();
Lớp Text chứa một thuộc tính có tên là văn bản kiểu chuỗi, đại diện cho văn bản sẽ được tạo.
Sau khi khởi tạo lớp Text, bạn cần đặt giá trị cho thuộc tính này bằng phương thức setText () như sau:
String text = "Hello how are you" Text.setText(text);
Bạn cũng có thể đặt vị trí (điểm gốc) của văn bản bằng cách chỉ định các giá trị cho các thuộc tính x và y bằng cách sử dụng các phương thức setter tương ứng của chúng, cụ thể là setX() và setY() như sau:
text.setX(50); text.setY(50);
Ví dụ
Chương trình sau đây là một ví dụ minh họa cách tạo một nút văn bản trong JavaFX. Lưu mã này trong một tệp có tên TextExample.java:
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.text.Text; public class TextExample extends Application { @Override public void start(Stage stage) { //Creating a Text object Text text = new Text(); //Setting the text to be added. text.setText("Hello how are you"); //setting the position of the text text.setX(50); text.setY(50); //Creating a Group object Group root = new Group(text); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Sample Application"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau:
javac TextExample.java java TextExample
Khi thực thi, chương trình trên tạo một cửa sổ JavaFX hiển thị văn bản được chỉ định như sau:
Vị trí và Phông chữ của Văn bản
Theo mặc định, văn bản được tạo bởi lớp văn bản có phông chữ…, kích thước… và có màu đen.
Bạn có thể thay đổi kích thước phông chữ và màu sắc của văn bản bằng phương thức setFont(). Phương thức này chấp nhận một đối tượng của lớp Font.
Lớp có tên Font của gói javafx.scene.text được sử dụng để xác định phông chữ cho văn bản. Lớp này chứa một phương thức tĩnh có tên là font().
Phương thức này chấp nhận bốn tham số cụ thể là:
-
family - Có kiểu String và đại diện cho họ phông chữ mà chúng ta muốn áp dụng cho văn bản.
-
weight - Thuộc tính này đại diện cho độ đậm của chữ. Nó chấp nhận 9 giá trị, đó là - FontWeight.BLACK, FontWeight.BOLD, FontWeight.EXTRA_BOLD, FontWeight.EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN.
-
posture - Thuộc tính này đại diện cho tư thế phông chữ (thông thường hoặc nghiêng). Nó chấp nhận hai giá trị FontPosture.REGULAR và FontPosture.ITALIC.
-
size - Thuộc tính này có kiểu double và nó đại diện cho kích thước của phông chữ.
Bạn có thể đặt phông chữ cho văn bản bằng cách sử dụng phương thức sau:
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
Ví dụ
Chương trình sau đây là một ví dụ minh họa cách đặt phông chữ của nút văn bản trong JavaFX. Ở đây, chúng ta đang đặt phông chữ thành Verdana, weight thành đậm, posture thành bình thường và kích thước thành 20.
Lưu mã này trong một tệp có tên TextFontExample.java:
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.text.Font; import javafx.scene.text.FontPosture; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; public class TextFontExample extends Application { @Override public void start(Stage stage) { //Creating a Text object Text text = new Text(); //Setting font to the text text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20)); //setting the position of the text text.setX(50); text.setY(130); //Setting the text to be added. text.setText("Hi how are you"); //Creating a Group object Group root = new Group(text); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Setting Font to the text"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau:
javac TextFontExample.java java TextFontExample
Khi thực thi, chương trình trên tạo một cửa sổ JavaFX hiển thị văn bản với phông chữ được chỉ định như sau:
Nét và màu sắc
Lớp Text cũng kế thừa lớp Shape của gói. Do đó, bạn có thể sử dụng javafx.scene.shape mà bạn có thể đặt nét và màu cho nút văn bản.
Bạn có thể đặt màu cho văn bản bằng phương thức setFill() của lớp shape (được kế thừa) như sau:
text.setFill(Color.BEIGE);
Tương tự, bạn có thể đặt màu nét của văn bản bằng phương thức setStroke(). Trong khi chiều rộng của nét có thể được đặt bằng phương thức setStrokeWidth() như sau:
//Setting the color text.setFill(Color.BROWN); //Setting the Stroke text.setStrokeWidth(2); //Setting the stroke color text.setStroke(Color.BLUE);
Ví dụ
Chương trình sau đây là một ví dụ minh họa cách đặt màu, nét vẽ Width và strokeColor, của nút văn bản. Trong đoạn mã này, ta đang thiết lập màu nét vẽ thành - xanh lam, màu văn bản thành - nâu và chiều rộng nét vẽ thành - 2.
Lưu mã này trong một tệp có tên StrokeExample.java:
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.scene.text.Font; import javafx.scene.text.FontPosture; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; public class StrokeExample extends Application { @Override public void start(Stage stage) { //Creating a Text object Text text = new Text(); //Setting font to the text text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 50)); //setting the position of the text text.setX(50); text.setY(130); //Setting the color text.setFill(Color.BROWN); //Setting the Stroke text.setStrokeWidth(2); // Setting the stroke color text.setStroke(Color.BLUE); //Setting the text to be added. text.setText("Hi how are you"); //Creating a Group object Group root = new Group(text); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Setting font to the text"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau:
javac StrokeExample.java java StrokeExample
Khi thực thi, chương trình trên tạo ra một cửa sổ JavaFX hiển thị văn bản với các thuộc tính nét và màu được chỉ định như sau:
Áp dụng trang trí cho văn bản
Bạn cũng có thể áp dụng các cách trang trí như gạch giữa; trong trường hợp này sẽ có một đường xuyển qua văn bản. Bạn có thể gạch dưới văn bản bằng các phương thức của lớp Text.
Bạn có thể gạch ngang văn bản bằng phương thức setStrikethrough(). Điều này chấp nhận một giá trị Boolean, truyền giá trị true cho phương thức này sẽ tạo đường gạch giữa văn bản:
//Striking through the text text1.setStrikethrough(true);
Theo cách tương tự, bạn có thể gạch dưới văn bản bằng cách truyền giá trị true cho phương thức setUnderLine() như sau:
//underlining the text text2.setUnderline(true);
Ví dụ
Các chương trình sau đây là một ví dụ chứng minh việc làm thế nào để áp dụng trang trí như gạch dưới hoặc gạch giữa một văn bản. Lưu mã này trong một tệp có tên DecectorsExample.java:
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.text.Font; import javafx.scene.text.FontPosture; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; public class DecorationsExample extends Application { @Override public void start(Stage stage) { //Creating a Text_Example object Text text1 = new Text("Hi how are you"); //Setting font to the text text1.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20)); //setting the position of the text text1.setX(50); text1.setY(75); //Striking through the text text1.setStrikethrough(true); //Creating a Text_Example object Text text2 = new Text("Welcome to Tutorialspoint"); //Setting font to the text text2.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20)); //setting the position of the text text2.setX(50); text2.setY(150); //underlining the text text2.setUnderline(true); //Creating a Group object Group root = new Group(text1, text2); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Decorations Example"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Biên dịch và thực thi tệp Java đã lưu từ dấu nhắc lệnh bằng các lệnh sau:
javac DecorationsExample.java java DecorationsExample
Khi thực thi, chương trình trên tạo ra một cửa sổ JavaFX.
Giải phóng thời gian, khai phóng năng lực