如何在 JavaFX 中向文本添加自定义字体?

javafxobject oriented programmingprogramming更新于 2026/1/3 15:40:17

您可以使用 setFont() 方法将所需的字体设置为 JavaFX 中的文本节点。此方法接受 javafx.scene.text.Font 类的对象。

Font 类表示 JavaFX 中的字体,此类提供了名为 font() 的方法的几种变体。如下所示 −

font(double size)
font(String family)
font(String family, double size)
font(String family, FontPosture pose, double size)
font(String family, FontWeight weight, double size)
font(String family, FontWeight weight, FontPosture pose, double size)

所有这些方法都是静态的,并返回 Font 对象。要设置字体,您需要使用其中一种方法创建字体对象,并使用 setText() 方法将创建的字体设置为文本。

创建自定义字体

除此之外,您还可以使用 loadFont() 方法加载自己的字体。此方法有两种变体

  • 一种方法接受 InputStream 类的对象(表示所需字体)和表示大小的双精度变量作为参数。

  • 一种方法接受表示字体 URL 的字符串变量和表示大小的双精度变量作为参数。

要加载自定义字体 −

  • 在项目文件夹中创建一个目录作为 resources/fonts。

  • 下载所需字体并将文件放在上面创建的文件夹。

  • 使用 loadFont() 方法加载字体。

  • 通过实例化 javafx.scene.text.Text 类创建文本节点。

  • 使用 setText() 方法将字体设置为文本。

示例

import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class CustomFontExample extends Application {
   public void start(Stage stage) throws FileNotFoundException {
      //创建文本对象
      Text text = new Text(30.0, 75.0, "ట్యూ టోరియల్స్ పాయింట్ కి స్వా గతిం");
      //从本地文件系统加载字体
      Font font = Font.loadFont("file:resources/fonts/TenaliRamakrishna-Regular.ttf", 45);
      //设置字体
      text.setFont(font);
      //设置文本颜色
      text.setFill(Color.BROWN);
      text.setStroke(Color.BLUEVIOLET);
      text.setStrokeWidth(0.5);
      //创建内阴影效果
      //创建阴影效果
      DropShadow shadow = new DropShadow();
      shadow.setOffsetY(5.0);
      //将效果设置为文本
      text.setEffect(shadow);
      //设置舞台
      Group root = new Group(text);
      Scene scene = new Scene(root, 595, 150, Color.BEIGE);
      stage.setTitle("Custom Font");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

输出


相关文章