首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:使用.setFont()时找不到符号

错误:使用.setFont()时找不到符号
EN

Stack Overflow用户
提问于 2018-07-24 00:15:49
回答 1查看 968关注 0票数 0

我一直在尝试在我的Swing应用程序中使用自定义字体(包含在包中)。我看过很多关于这个主题的代码片段和教程,但我似乎不能让它工作。在将13个错误缩小到1个之后,我可能已经将代码修改为不能完全完成我想要的功能的代码。不幸的是,我才刚刚开始学习Java,我搞不懂它。下面是我的代码,后面是我的错误。任何帮助都将不胜感激,非常感谢!

代码语言:javascript
运行
复制
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);

  }
}

如前所述,下面是我得到的错误(非常简单,真的):

代码语言:javascript
运行
复制
welcomeWindow.java:40: error: cannot find symbol
    welcomeTitle.setFont(childTitle);
                         ^
  symbol:   variable childTitle
  location: class welcomeWindow
1 error

我一直在想我没有正确创建字体,但我假设我错了,因为我不能解决这个问题。如果有人能指出我的代码哪里出了问题,那就太棒了。谢谢!

EN

Stack Overflow用户

发布于 2018-07-24 00:17:41

对于try..catch块,变量myFont被声明为本地变量。将其移动到区块之外。

代码语言:javascript
运行
复制
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");
}
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51483218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档