Привет всем! У меня возникли проблемы с загрузкой пользовательских шрифтов в Java.Загрузка пользовательских шрифтов в Java
public class CustomFonts extends JPanel {
public static void loadFont() throws FontFormatException, IOException {
String fontFileName = "stocky.ttf";
InputStream is = CustomFonts.class.getClassLoader()
.getResourceAsStream(fontFileName);
Font ttfBase = Font.createFont(Font.TRUETYPE_FONT, is);
Font ttfReal = ttfBase.deriveFont(Font.PLAIN, 24);
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
ge.registerFont(ttfReal);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Blach Blach Blach");
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
try {
loadFont();
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}
JLabel fontF = new JLabel("Testing 1, 2, 3");
fontF.setFont(new Font("ttfReal", Font.PLAIN, 20));
frame.add(fontF);
}
}
Когда я запускаю код шрифт только кажется, что по умолчанию один. Я загрузил файл ttf в папку проекта Eclipse, но должен ли я предоставить явный маршрут к файлу? Я пытаюсь понять шрифты через эту базовую программу, потому что я пытаюсь загрузить ее в большую программу.
Ваш пользовательский шрифт не устанавливается правильно, так как шрифт с именем 'ttfReal' не найден. 'registerFont' не называет шрифт локальным именем объекта объекта Font. Вы можете определить имя своего собственного шрифта, указав [все имена шрифтов] (http://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsEnvironment.html#getAvailableFontFamilyNames()), но вы можете найти проще просто сохранить пользовательский шрифт в переменной класса и получить его, когда вам нужно установить его версию. – Vulcan