有什么方法可以避免在使用Graphics2D的JAVA中重复加载字体?

时间:2014-03-20 23:31:28

标签: java fonts try-catch draw graphics2d

问题是字体不断加载,我想知道是否有更好的工作....

我正在制作一个简单的java游戏,我有这个代码,以便将所有对象绘制到框架中:

public void paint(Graphics g){
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;

    Font font = null;
    try {
        font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(new File("Font/Blocks.ttf"))).deriveFont(Font.PLAIN, 24);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (FontFormatException e) {
        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }
    g2d.setFont(font);


    //Drawing Strings
    g2d.setColor(Color.MAGENTA);
    g2d.drawString("Y CORD:" + PlayerDefine.getY(), 5, 445);
    g2d.drawString("X CORD:" + PlayerDefine.getX(), 5, 460);

现在我正在加载字体,这就是我想要的,但我看到每次帧刷新时(我将主Timer设置为10ms)它一遍又一遍地加载字体。我想知道是否有办法避免这种情况,即在游戏开始时使字体加载并继续使用它直到窗口关闭。感谢任何能够回应此问题的人!

1 个答案:

答案 0 :(得分:2)

不要尝试在paint方法中加载字体,在初始化类时执行 - 每次对象需要自己渲染时都会调用paint()