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 窗口,显示指定的文本,如下所示 −
文本的位置和字体
默认情况下,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.REGULAR 和 FontPosture.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 窗口,如下所示 −