我一直在尝试在我的 Swing 应用程序中使用自定义字体(包含在包中)。我看过很多关于这个主题的代码片段和教程,但我似乎无法让它工作。 将十三个错误缩小到一个后,我可能已将代码修改为无法完全实现我想要的功能。不幸的是,我刚刚开始学习Java,我无法弄清楚。下面是我的代码,之后是我的错误。任何帮助将不胜感激,非常感谢!
import javax.swing.*;
import java.awt.Toolkit;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.io.FileInputStream;
import java.io.IOException;
import java.awt.FontFormatException;
public class welcomeWindow extends JFrame {
public static void main(String[] args) {
new welcomeWindow();
}
public welcomeWindow() {
// opens window to specifications
Toolkit toolkit=Toolkit.getDefaultToolkit();
this.setSize(toolkit.getScreenSize().width, toolkit.getScreenSize().height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("window title");
this.setVisible(true);
this.setLocationRelativeTo(null);
// creates panel, adds panel to frame
JPanel welcomePanel = new JPanel();
this.add(welcomePanel);
// font (where i THINK the problem may be)
try {
Font childTitle = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("comic_andy.ttf")).deriveFont(30f);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("comic_andy.ttf")));
} catch (IOException | FontFormatException e) {
e.printStackTrace();
Font childTitle = new Font("Helvetica", Font.BOLD, 30);
System.err.println("caught error");
}
// creates title label and adds to panel
JLabel welcomeTitle = new JLabel("title");
welcomeTitle.setFont(childTitle);
welcomePanel.add(welcomeTitle);
}
}
如前所述,这是我遇到的错误(实际上非常简单):
welcomeWindow.java:40: error: cannot find symbol
welcomeTitle.setFont(childTitle);
^
symbol: variable childTitle
location: class welcomeWindow
1 error
我一直认为我没有正确创建字体,但我认为我错了,因为我无法解决问题。如果有人能指出我的代码出错的方向,那就太棒了。谢谢!
最佳答案
变量myFont
被声明为try..catch
block 的本地变量。将其移到 block 之外。
Font myFont;
try {
myFont = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("comic_andy.ttf")).deriveFont(30f);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("comic_andy.ttf")));
} catch (IOException | FontFormatException e) {
e.printStackTrace();
myFont = new Font("Helvetica", Font.BOLD, 30);
System.err.println("caught error");
}
关于java - 错误 : cannot find symbol when using . setFont(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483218/