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

时间:2015-12-18 02:38:47

标签: java swing jframe jlabel embedded-resource

我试图在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()不是非静态方法,不能从静态上下文中引用。

它还说它找不到符号frame.add(label);

请在答案中具体说明,因为我不是那么先进的Java。

1 个答案:

答案 0 :(得分:2)

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

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