JavaFX Text类

在某些情况下,我们需要在应用程序界面上提供基于文本的信息。为此,JavaFX 库提供了一个名为javafx.scene.text.Text的类。此类提供了各种方法来更改文本的各种属性。我们只需要实例化这个类就可以在我们的应用程序中实现文本。

1 Text类的属性

属性 描述 setter方法
boundstype 此属性为对象类型。它决定了计算文本边界的方式。 setBoundsType(TextBoundsType value)
font 文本的字体。 setFont(Font value)
fontsmoothingType 定义字体请求的平滑类型 setFontSmoothingType(FontSmoothingType value)
linespacing 线之间的垂直空间(以像素为单位)。它是双重类型的属性。 setLineSpacing(double spacing)
strikethrough 这是一个布尔类型的属性。我们可以通过将此属性设置为 true 来在文本中放置一行。 setStrikeThrough(boolean value)
textalignment 水平文本对齐 setTextAlignment(TextAlignment value)
textorigin 局部坐标系中文本坐标系的原点 setTextOrigin(VPos value)
text 它是一个字符串类型的属性。它定义了要显示的文本字符串 setText(String value)
underline 它是一个布尔类型的属性。我们可以通过将此属性设置为 true 来为文本加下划线 setUnderLine(boolean value)
wrappingwidth 文本要换行的文本宽度限制。它是一个双重类型的属性 setWrappingWidth(double value)
x 文本的 X 坐标 setX(double value)
y 文本的 Y 坐标 setY(double value)

2 创建文本节点

javafx.scene.text.Text需要实例化以创建文本节点。使用 setter 方法setText(string)将字符串设置为文本类对象的文本。按照下面给出的语法来实例化 Text 类。

Text <text_Object> = new Text();   
text.setText(<string-text>); 

 3 Text类的例子

以下示例说明了Text类。在这里,我们没有设置文本的位置,因此文本将显示在屏幕中央。

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Shape_Example extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Text text = new Text();
        text.setText("Hello !! 欢迎光临一点教程网");
        StackPane root = new StackPane();
        Scene scene = new Scene(root,300,400);
        root.getChildren().add(text);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Text Example");
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);

    }
}

输出结果为:

4 文本的字体和位置

JavaFX 使我们能够将各种字体应用于文本节点。我们只需要使用 setter 方法setFont()来设置Text 类的属性字体。此方法接受Font类的对象。Font类属于javafx.scene.text包。它包含一个名为font()的静态方法。这将返回一个Font类型的对象,该对象将作为参数传递给 Text 类的setFont()方法。Font.font()方法接受以下参数。

  1. Family:代表字体的类型。它是字符串类型,应该是系统中存在的适当字体系列。
  2. Weight:此 Font 类属性用于字体的粗细。有 9 个值可用作字体粗细。值为FontWeight.BLACK、BOLD、EXTRA_BOLD、EXTRA_LIGHT、LIGHT、MEDIUM、NORMAL、SEMI_BOLD、THIN。
  3. Posture:这个Font类属性代表字体的姿势。它可以是FontPosture.ITALIC或FontPosture.REGULAR。
  4. Size:这是一个双重类型的属性。它用于设置字体的大小。

下面给出了 setFont() 方法的语法。

<text_object>.setFont(Font.font(<String font_family>, <FontWeight>, <FontPosture>, <FontSize>)  

例子:

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Shape_Example extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        Text text = new Text();
        text.setX(100);
        text.setY(20);
        text.setFont(Font.font("Abyssinica SIL",FontWeight.BOLD,FontPosture.REGULAR,20));
        text.setText("欢迎访问一点教程网");
        Group root = new Group();
        Scene scene = new Scene(root,500,200);
        root.getChildren().add(text);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Text Example");
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

输出结果为:

5 对文本应用描边和颜色

Stroke 表示文本边界处的填充。JavaFX 允许我们对文本应用描边和颜色。javafx.scene.text.Text类提供了一个名为setStroke()的方法,它接受 Paint 类对象作为参数。只需传递将在笔划上绘制的颜色。我们还可以通过将 double 类型的宽度值传递给setStrokeWidth()方法来设置笔画的宽度。为了设置 Text 的颜色,javafx.scene.text.Text类提供了另一个名为setFill() 的方法。我们只需要传递要在文本中填充的颜色。

例子:

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Shape_Example extends Application {
    
    @Override
    public void start(Stage primaryStage) throws Exception {
        Text text = new Text();

        text.setX(100);
        text.setY(20);
        text.setFont(Font.font("Abyssinica SIL",FontWeight.BOLD,FontPosture.REGULAR,25));
        text.setFill(Color.BLUE);// setting colour of the text to blue   
        text.setStroke(Color.BLACK); // setting the stroke for the text    
        text.setStrokeWidth(1); // setting stroke width to 2   
        text.setText("欢迎访问一点教程网");
        Group root = new Group();
        Scene scene = new Scene(root,500,200);
        root.getChildren().add(text);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Text Example");
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);

    }
}

输出结果为:

6 对文本应用装饰

我们可以通过设置属性应用于装饰的文字删除线和下划线的javafx.scene.text.Text类。下面给出了这两种方法的语法。

<TextObject>.setStrikeThrough(Boolean value) //pass true to put a line across the text  
<TextObject>.setUnderLine(Boolean value) //pass true to underline the text  

我们还可以将 JavaFX 效果应用于 Text 类对象。我们将在接下来的章节中讨论 JavaFX 效果。

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Shape_Example extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Text text = new Text();

        text.setX(100);
        text.setY(40);
        text.setFont(Font.font("Liberation Serif",25));
        text.setText("Hello !!");
        text.setStrikethrough(true);
        Text text1=new Text();
        text1.setX(100);
        text1.setY(140);
        text1.setText("欢迎光临一点教程网");
        text1.setFont(Font.font("Liberation Serif",25));
        text1.setUnderline(true);
        Group root = new Group();
        Scene scene = new Scene(root,500,200);
        root.getChildren().addAll(text,text1);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Text Example");
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

输出结果为:

热门文章

优秀文章