JavaFX - Văn bản
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ênText, 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óijavafx.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, ... Nó còn kế thừa các thuộc tính nút hình cơ bản như strokeFill, stroke, strokeWidth, strokeType, Vân vân.
Tạo nút văn bản
Kể từ khi văn bản lớp 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 Văn bản chứa một thuộc tính có tên text thuộc loại chuỗi, đại diện cho văn bản sẽ được tạo.
Sau khi khởi tạo lớp Văn bản, bạn cần đặt giá trị cho thuộc tính này bằng cách sử dụng setText() như hình dưới đây.
String text = "Hello how are you"
Text.setText(text);
Bạn cũng có thể đặt vị trí (nguồn 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ư được hiển thị trong khối mã sau:
text.setX(50);
text.setY(50);
Thí 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ênTextExample.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 cách sử dụng setFont()phương pháp. Phương thức này chấp nhận một đối tượng củaFont lớp học.
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ênfont().
Phương thức này chấp nhận bốn tham số:
family - Đây là kiểu Chuỗi 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 thể hiện độ nặng của phông 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 thể hiện 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 thuộc loại 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 pháp sau:
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
Thí 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 tôi đang đặt phông chữ thành Verdana, trọng lượng thành đậm, tư thế 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ụngjavafx.scene.shape mà bạn cũng 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 cách sử dụng setFill() phương thức của lớp shape (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 pháp setStroke(). Trong khi chiều rộng của nét có thể được thiết lập bằng phương phápsetStrokeWidth() như sau -
//Setting the color
text.setFill(Color.BROWN);
//Setting the Stroke
text.setStrokeWidth(2);
//Setting the stroke color
text.setStroke(Color.BLUE);
Thí dụ
Chương trình sau đây là một ví dụ minh họa cách thiết lập màu, strokeWidth và strokeColor, của nút văn bản. Trong đoạn mã này, chúng tôi đ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 trang trí như đánh xuyên qua; trong trường hợp đó một dòng được chuyển qua văn bản. Bạn có thể gạch dưới văn bản bằng các phương pháp củaText lớp học.
Bạn có thể duyệt qua văn bản bằng phương pháp setStrikethrough(). Điều này chấp nhận một giá trị Boolean, chuyển giá trịtrue vào phương thức này để đánh xuyên qua văn bản như được hiển thị trong hộp mã sau:
//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 chuyển giá trị true phương pháp setUnderLine() như sau -
//underlining the text
text2.setUnderline(true);
Thí dụ
Chương trình sau đây là một ví dụ minh họa cách áp dụng các trang trí như underline hoặc là strike throughvào một văn bản. Lưu mã này trong một tệp có tênDecorationsExample.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 một cửa sổ JavaFX như hình dưới đây: