杰瑞科技汇

java字体如何设置大小设置

在 Java 中设置字体大小,主要取决于你使用的图形界面库,下面我将为你详细介绍在 Java SwingJavaFX 这两个最主流的 GUI 库中如何设置字体大小,并附上清晰的代码示例。

java字体如何设置大小设置-图1
(图片来源网络,侵删)

核心概念

无论使用哪个库,设置字体大小的基本思路都是:

  1. 获取或创建一个 Font 对象Font 类是 Java 中用于表示字体的核心类。
  2. 设置字体的大小,在创建 Font 对象时,你需要指定字体名称、样式(如普通、粗体)和大小
  3. Font 对象应用到组件上JLabelJButtonText 组件。

Java Swing 中的字体设置

Swing 是 Java 传统的 GUI 工具包,在 Swing 中,所有可见的组件(如 JLabel, JButton, JTextField 等)都有一个 setFont(Font font) 方法。

步骤:

  1. 创建 Font 对象:使用 Font 类的静态工厂方法 Font.createFont()Font.decode(),但最常用的是 Font 的构造函数: new Font(String name, int style, int size)

    • name: 字体名称,"Arial", "宋体", "Times New Roman",你可以使用 GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames() 来获取系统所有可用的字体。
    • style: 字体样式,使用 Font 类的静态常量:
      • Font.PLAIN (普通)
      • Font.BOLD (粗体)
      • Font.ITALIC (斜体)
      • 可以用 组合,如 Font.BOLD | Font.ITALIC
    • size: 字体大小(以磅为单位,point),这是你设置大小的关键参数。
  2. 将字体应用到组件:调用组件的 setFont() 方法。

    java字体如何设置大小设置-图2
    (图片来源网络,侵删)

代码示例:

import javax.swing.*;
import java.awt.*;
public class SwingFontSizeExample {
    public static void main(String[] args) {
        // 1. 创建窗口
        JFrame frame = new JFrame("Swing 字体大小设置示例");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setLayout(new FlowLayout()); // 使用流式布局
        // 2. 创建一个标签
        JLabel label1 = new JLabel("这是默认大小的文本 (14px)");
        frame.add(label1);
        // 3. 创建一个新的 Font 对象,大小设为 24
        Font largeFont = new Font("宋体", Font.PLAIN, 24);
        // 4. 将新字体应用到第二个标签
        JLabel label2 = new JLabel("这是大号文本 (24px)");
        label2.setFont(largeFont); // 设置字体
        frame.add(label2);
        // 5. 创建一个粗体斜体的字体
        Font boldItalicFont = new Font("Arial", Font.BOLD | Font.ITALIC, 18);
        JLabel label3 = new JLabel("这是粗体斜体文本 (18px)");
        label3.setFont(boldItalicFont);
        frame.add(label3);
        // 6. 显示窗口
        frame.setVisible(true);
    }
}

动态修改字体大小

如果你想在程序运行时动态修改字体大小,只需再次调用 setFont() 方法即可。

// 假设你有一个按钮和一个标签
JButton increaseButton = new JButton("增大字体");
JLabel dynamicLabel = new JLabel("点击按钮改变我");
increaseButton.addActionListener(e -> {
    Font currentFont = dynamicLabel.getFont();
    // 获取当前字体大小,然后增加 5
    float newSize = currentFont.getSize() + 5;
    // 创建一个新字体,保持原有的名称和样式
    Font newFont = currentFont.deriveFont(newSize);
    dynamicLabel.setFont(newFont);
});

JavaFX 中的字体设置

JavaFX 是更现代的 GUI 框架,是 Swing 的继任者,在 JavaFX 中,设置字体同样简单,但 API 略有不同。

步骤:

  1. 创建 Font 对象:使用 Font 类的静态方法 font(String family, double size)font(double size),你也可以使用 Font.loadFont() 从文件加载字体。

    • family: 字体系列名称,如 "System", "Arial", "SimSun"。
    • size: 字体大小(以磅为单位)
  2. 将字体应用到节点:几乎所有 JavaFX 节点(如 Label, Button, Text)都有一个 setFont(Font font) 方法。

代码示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class JavaFXFontSizeExample extends Application {
    @Override
    public void start(Stage primaryStage) {
        // 1. 创建一个标签
        Label label1 = new Label("这是默认大小的文本");
        // 默认字体大小通常是 13 或 14,取决于平台
        // 2. 创建一个新的 Font 对象,大小设为 24
        Font largeFont = Font.font("Arial", 24.0); // 指定字体系列和大小
        Label label2 = new Label("这是大号文本 (24px)");
        label2.setFont(largeFont);
        // 3. 创建一个粗体字体
        // Font.font() 方法可以链式调用样式
        Font boldFont = Font.font("System", Font.BOLD, 18.0);
        Label label3 = new Label("这是粗体文本 (18px)");
        label3.setFont(boldFont);
        // 4. 创建一个斜体字体
        Font italicFont = Font.font("SimSun", Font.ITALIC, 16.0);
        Label label4 = new Label("这是斜体文本 (16px)");
        label4.setFont(italicFont);
        // 5. 将所有标签添加到布局容器中
        VBox root = new VBox(10); // Vbox,间距为10
        root.getChildren().addAll(label1, label2, label3, label4);
        // 6. 创建场景并显示窗口
        Scene scene = new Scene(root, 400, 300);
        primaryStage.setTitle("JavaFX 字体大小设置示例");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

动态修改字体大小

在 JavaFX 中,你可以使用 Font.font() 方法的重载版本,它接受一个 double 类型的 size 参数,并结合 Font.getDefault() 来保持字体系列和样式不变。

import javafx.scene.text.Font;
// 假设你有一个按钮和一个标签
Button increaseButton = new Button("增大字体");
Label dynamicLabel = new Label("点击按钮改变我");
increaseButton.setOnAction(e -> {
    // 获取当前字体
    Font currentFont = dynamicLabel.getFont();
    // 获取当前大小并增加
    double newSize = currentFont.getSize() + 2;
    // 创建新字体,保持原有的字体系列
    Font newFont = Font.font(currentFont.getFamily(), newSize);
    dynamicLabel.setFont(newFont);
});

总结与对比

特性 Java Swing JavaFX
核心类 java.awt.Font javafx.scene.text.Font
创建字体 new Font(name, style, size) Font.family(size)Font.family(style, size)
设置大小 在构造函数中指定 size 参数 Font 静态方法中指定 size 参数
应用到组件 component.setFont(myFont) node.setFont(myFont)
动态修改 同样使用 setFont(),可以基于旧字体创建新字体 同样使用 setFont(),可以使用 Font.font(oldFont.getFamily(), newSize)

重要提示:单位

在 Java 中,无论是 Swing 还是 JavaFX,字体大小的单位都是 ,1磅约等于1/72英寸,这是一个绝对单位,而不是像素,在不同分辨率的屏幕上,相同的磅值会显示为不同的像素大小,从而保证文本的物理大小基本一致。

分享:
扫描分享到社交APP
上一篇
下一篇