JavaFX - 文本

与各种形状一样,您也可以在 JavaFX 中创建文本节点。文本节点由名为 Text 的类表示,该类属于 javafx.scene.text 包。

此类包含多个属性,用于在 JavaFX 中创建文本并修改其外观。该类还继承了属于包 javafx.scene.shape 的 Shape 类。

因此,除了字体、对齐方式、行距、文本等文本属性外,它还继承了基本形状节点属性,如 strokeFill、stroke、strokeWidth、strokeType 等。

创建文本节点

由于包 javafx.scene.text 中的 Text 类表示 JavaFX 中的文本节点,因此您可以通过实例化该类来创建文本,如下所示 −

Text text = new Text();

Text 类包含一个名为 text 的字符串类型属性,表示要创建的文本。

实例化 Text 类后,您需要使用 setText() 方法设置此属性的值,如下所示。

String text = "Hello how are you"
Text.setText(text);

您还可以通过使用属性 x 和 y 各自的 setter 方法(即 setX()setY())指定属性值来设置文本的位置(原点),如以下代码块 −

text.setX(50);
text.setY(50);

示例

以下程序是一个示例,演示如何在 JavaFX 中创建文本节点。将此代码保存在名为 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) {
    //创建 Text 对象
    Text text = new Text();
    
    //设置要添加的文本。
    text.setText("Hello how are you");
    
    //设置文本的位置
    text.setX(50);
    text.setY(50);
    
    //创建 Group 对象
    Group root = new Group(text);
    
    //创建 scene 对象
    Scene scene = new Scene(root, 600, 300);
    
    //设置 Stage 的标题
    stage.setTitle("Sample Application");
    
    //将场景添加到舞台(Stage)
    stage.setScene(scene);
    
    //显示舞台(Stage)的内容
    stage.show();
    }      
   public static void main(String args[]){ 
      launch(args); 
   } 
} 

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac TextExample.java 
java TextExample

执行时,上述程序会生成一个 JavaFX 窗口,显示指定的文本,如下所示 −

Sample Application Text

文本的位置和字体

默认情况下,text 类创建的文本的字体为…、大小为…,颜色为黑色。

您可以使用 setFont() 方法更改文本的字体大小和颜色。此方法接受 Font 类的对象。

javafx.scene.text 中名为 Font 的类用于定义文本的字体。该类包含一个名为 font() 的静态方法。

该方法接受四个参数,即 −

  • family − 这是一个 String 类型,表示我们要应用于文本的字体系列。

  • weight − 此属性表示字体的粗细。它接受 9 个值,分别是 − FontWeight.BLACK、FontWeight.BOLD、FontWeight.EXTRA_BOLD、FontWeight.EXTRA_LIGHT、LIGHT、MEDIUM、NORMAL、SEMI_BOLD、THIN

  • posture − 此属性表示字体姿势(常规或斜体)。它接受两个值 FontPosture.REGULARFontPosture.ITALIC

  • size − 此属性为 double 类型,表示字体的大小。

您可以使用以下方法 − 将字体设置为文本

text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));

示例

以下程序是一个示例,演示如何在 JavaFX 中设置文本节点的字体。在这里,我们将字体设置为 Verdana,粗细设置为粗体,姿势设置为常规,大小设置为 20。

将此代码保存在名为 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) {
    //创建 Text 对象
    Text text = new Text();
    
    //设置文本的字体
    text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
    
    //设置文本的位置
    text.setX(50);
    text.setY(130);
    
    //设置要添加的文本。
    text.setText("Hi how are you");
    
    //创建 Group 对象
    Group root = new Group(text);
    
    //创建 scene 对象
    Scene scene = new Scene(root, 600, 300);
    
    //设置 Stage 的标题
    stage.setTitle("Setting Font to the text");
    
    //将场景添加到舞台(Stage)
    stage.setScene(scene);
    
    //显示舞台(Stage)内容
    stage.show();
    }    
   public static void main(String args[]){ 
      launch(args); 
   } 
}      

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac TextFontExample.java 
java TextFontExample 

执行时,上述程序会生成一个 JavaFX 窗口,显示具有指定字体的文本,如下所示 −

将字体设置为文本

描边和颜色

Text 类还继承了包中的 Shape 类。因此,您可以使用 javafx.scene.shape,也可以使用它将描边和颜色设置为文本节点。

您可以使用形状(继承)类的 setFill() 方法将颜色设置为文本,如下所示 −

text.setFill(Color.BEIGE);

同样,您可以使用方法 setStroke() 设置文本的描边颜色。而描边的宽度可以使用方法 setStrokeWidth() 来设置,如下所示 −

//设置颜色
text.setFill(Color.BROWN);

//设置描边
text.setStrokeWidth(2);

//设置描边颜色
text.setStroke(Color.BLUE);

示例

以下程序是一个示例,演示如何设置文本节点的颜色、strokeWidth 和 strokeColor。在此代码中,我们将描边颜色设置为 – 蓝色,将文本颜色设置为 – 棕色,将描边宽度设置为 – 2。

将此代码保存在名为 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) {
    //创建 Text 对象
    Text text = new Text();
    
    //设置文本字体
    text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 50));
    
    //设置文本位置
    text.setX(50);
    text.setY(130);
    
    //设置颜色
    text.setFill(Color.BROWN);
    
    //设置描边
    text.setStrokeWidth(2);
    
    //设置描边颜色
    text.setStroke(Color.BLUE);
    
    //设置要添加的文本。
    text.setText("Hi how are you");
    
    //创建 Group 对象
    Group root = new Group(text);
    
    //创建 scene 对象
    Scene scene = new Scene(root, 600, 300);
    
    //设置舞台(Stage)标题
    stage.setTitle("设置文本字体");
    
    //将场景添加到舞台(Stage)
    stage.setScene(scene);
    
    //显示舞台(Stage)内容
    stage.show();
    }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}      

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac StrokeExample.java 
java StrokeExample 

执行时,上述程序会生成一个 JavaFX 窗口,显示具有指定笔触和颜色属性的文本,如下所示 −

文本笔触示例

将装饰应用于文本

您还可以应用诸如删除线之类的装饰;在这种情况下,一条线会穿过文本。您可以使用 Text 类的方法为文本加下划线。

您可以使用方法 setStrikethrough() 删除文本。这接受布尔值,将值 true 传递给此方法以删除文本,如以下代码框中所示 −

//删除文本
text1.setStrikethrough(true);

同样,您可以通过将值 true 传递给方法 setUnderLine() 来为文本添加下划线,如下所示 −

//为文本添加下划线
text2.setUnderline(true);

示例

以下程序是一个示例,演示如何将 下划线删除线 等修饰应用于文本。将此代码保存在名为 DecorationsExample.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) {
    //创建 Text_Example 对象
    Text text1 = new Text("Hi how are you");
    
    //设置文本字体
    text1.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
    
    //设置文本位置
    text1.setX(50);
    text1.setY(75);
    
    //删除文本
    text1.setStrikethrough(true);
    
    //创建 Text_Example 对象
    Text text2 = new Text("Welcome to Tutorialspoint");
    
    //设置文本字体
    text2.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
    
    //设置文本的位置
    text2.setX(50);
    text2.setY(150);
    
    //给文本加下划线
    text2.setUnderline(true);
    
    //创建一个 Group 对象
    Group root = new Group(text1, text2);
    
    //创建一个 scene 对象
    Scene scene = new Scene(root, 600, 300);
    
    //给 Stage 设置标题
    stage.setTitle("Decorations Example");
    
    //将 scene 添加到 stage
    stage.setScene(scene);
    
    //显示 stage 的内容
    stage.show();
    }    
   public static void main(String args[]){ 
      launch(args); 
   } 
}

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac DecorationsExample.java 
java DecorationsExample

执行时,上述程序会生成一个 JavaFX 窗口,如下所示 −

装饰示例