JavaFX - 文本

  • 简述

    就像各种形状一样,您也可以在 JavaFX 中创建文本节点。文本节点由名为的类表示Text,属于包 javafx.scene.text.
    此类包含多个用于在 JavaFX 中创建文本并修改其外观的属性。这个类也继承了属于包的Shape类javafx.scene.shape.
    因此,除了字体、对齐方式、行距、文本等文本的属性外,它还继承了基本的形状节点属性,如 strokeFill, stroke, strokeWidth, strokeType, 等等。
  • 创建文本节点

    由于包的类 Text javafx.scene.text 表示 JavaFX 中的文本节点,您可以通过实例化此类来创建文本,如下所示 -
    
    Text text = new Text();
    
    类 Text 包含一个名为 text 字符串类型,表示要创建的文本。
    实例化 Text 类后,您需要使用 setText() 方法如下图。
    
    String text = "Hello how are you" 
    Text.setText(text);
    
    您还可以通过使用各自的 setter 方法指定属性 x 和 y 的值来设置文本的位置(原点),即 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) {       
          //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); 
       } 
    } 
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac TextExample.java 
    java TextExample
    
    执行时,上面的程序会生成一个 JavaFX 窗口,显示指定的文本,如下所示 -
    示例应用文本
  • 文本的位置和字体

    默认情况下,文本类创建的文本是字体...、大小...和黑色的。
    您可以使用 setFont()方法。这个方法接受一个对象Font 班级。
    类名为 Font 包裹的 javafx.scene.text用于定义文本的字体。这个类包含一个名为的静态方法font().
    此方法接受四个参数,即 -
    • family - 这是一个字符串类型,代表我们要应用于文本的字体系列。
    • 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) {       
          //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); 
       } 
    }      
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac TextFontExample.java 
    java TextFontExample 
    
    执行时,上述程序生成一个 JavaFX 窗口,显示具有指定字体的文本,如下所示 -
    将字体设置为文本
  • 笔触和颜色

    Text 类还继承了包的 Shape 类。因此,您可以使用javafx.scene.shape 您也可以使用它为文本节点设置笔触和颜色。
    您可以使用 setFill() 形状(继承)类的方法如下 -
    
    text.setFill(Color.BEIGE); 
    
    同样,您可以使用方法设置文本的笔触颜色 setStroke(). 虽然可以使用方法设置笔划的宽度setStrokeWidth() 如下 -
    
    //Setting the color 
    text.setFill(Color.BROWN); 
            
    //Setting the Stroke  
    text.setStrokeWidth(2); 
           
    //Setting the stroke color 
    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) {       
          //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); 
       } 
    }      
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac StrokeExample.java 
    java StrokeExample 
    
    执行时,上述程序生成一个 JavaFX 窗口,显示具有指定笔画和颜色属性的文本,如下所示 -
    文字描边示例
  • 对文本应用装饰

    您还可以应用装饰,例如删除线;在这种情况下,一行将通过文本。您可以使用以下方法在文本下划线Text 班级。
    您可以使用方法删除文本 setStrikethrough(). 这接受一个布尔值,传递值true 使用此方法删除文本,如以下代码框中所示 -
    
    //Striking through the text 
    text1.setStrikethrough(true); 
    
    同样,您可以通过传递值来为文本加下划线 true 到方法 setUnderLine() 如下 -
    
    //underlining the text     
    text2.setUnderline(true);
    

    例子

    以下程序是一个示例,演示如何应用装饰,例如 underline 或者 strike through到一个文本。将此代码保存在名称为的文件中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) {       
          //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); 
       } 
    }
    
    使用以下命令从命令提示符编译并执行保存的 Java 文件。
    
    javac DecorationsExample.java 
    java DecorationsExample
    
    执行时,上述程序会生成一个 JavaFX 窗口,如下所示 -
    装饰品示例