有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing如何在java的JFrame中显示自定义字体文本?

我一直试图在JFrame上显示一个带有自定义字体的短语,但最终只显示没有字体的文本。当我编译以下代码时:

import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import java.awt.Font.*;

public class JavaPractice{
  public static void main(String[]args){
    JFrame frame = new JFrame("Java Practice!");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(label);
    frame.pack();
    frame.getContentPane().setBackground(Color.decode("#101010"));
    frame.setSize(720,480);
    frame.setResizable(false);
    frame.setVisible(true);
    JLabel label = new JLabel("Press Enter To Continue");
    Font font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("PixelFont.ttf"));
    label.setFont(font.deriveFont(Font.BOLD, 12f));
  }
}

我从编译器那里得到反馈,说getClass()不是一个非静态方法,不能从静态上下文引用

它还说它找不到符号框。添加(标签)

请具体回答,因为我在Java方面没有那么先进


共 (1) 个答案

  1. # 1 楼答案

    我已经根据我们在评论中指出的内容更改了您的代码。你的字体文件在哪里

    import java.awt.*;
    import javax.swing.*;
    import java.awt.image.*;
    import java.awt.Font.*;
    
    public class JavaPractice{
        public static void main(String[]args){
            JFrame frame = new JFrame("Java Practice!");
            JLabel label = new JLabel("Press Enter To Continue");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(label);
            frame.pack();
            frame.getContentPane().setBackground(Color.decode("#101010"));
            frame.setSize(720,480);
            frame.setResizable(false);
            frame.setVisible(true);
            try{
                Font font = Font.createFont(Font.TRUETYPE_FONT, JavaPractice.class.getResourceAsStream("PixelFont.ttf"));
                label.setFont(font.deriveFont(Font.BOLD, 12f));
            }
            catch(Exception e){}
        }
    }
    

    目前的结果是: Output