📜  JavaFX-文本

📅  最后修改于: 2020-11-14 07:09:32             🧑  作者: Mango


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

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

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

创建一个文本节点

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

Text text = new Text();

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

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

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

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

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类的对象。

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

此方法接受四个参数,即-

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

  • 重量-此属性表示字体的重量。它接受9个值,分别是-FontWeight.BLACK,FontWeight.BOLD,FontWeight.EXTRA_BOLD,FontWeight.EXTRA_LIGHT,LIGHT,MEDIUM,NORMAL,SEMI_BOLD,THIN

  • 姿势-此属性表示字体姿势(常规或斜体)。它接受两个值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,通过它也可以将笔划和颜色设置为文本节点。

您可以使用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);

下面的程序是一个示例,演示如何在文本上应用下划线删除线之类的修饰。将此代码保存在名为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窗口,如下所示-

装饰实例