2013-07-24 24 views
0

在我的程序中,我已经创建了几个全局变量,但它不适用于加载的文件。创建全局文件输入

我打开一个文件名为.ttf(自定义字体,很明显),并创建一个字体类型的变量(或者是一个常数?)它:

public class FallenStar extends JPanel implements Runnable 
{ 

[...] //global variables 

public static void main(String[] args) throws IOException, FontFormatException 
{ 
    InputStream input = FallenStar.class.getResourceAsStream("slkscre.ttf"); 
    Font Silkscreen = Font.createFont(Font.TRUETYPE_FONT, input); 

    @Override 
    public void run() 
    { 
    [...] 
    } 
} 

的问题是,如果我喜欢做一些操作,它不能检测SilkScreen,这意味着(至少我认为)main中的变量不公开。

无论如何,如果我做这种方式:

public class FallenStar extends JPanel implements Runnable 
{ 

InputStream input = FallenStar.class.getResourceAsStream("slkscre.ttf"); 
Font Silkscreen = Font.createFont(Font.TRUETYPE_FONT, input); 

public static void main(String[] args) throws IOException, FontFormatException 
{ 

    @Override 
    public void run() 
    { 
    [...] 
    } 
} 

我得到了错误unreported exception FontFormatException; must be caught of declared to be thrown。我是Java编程新手,所以我想问一下这是什么意思?

同样的情况,无论是如果inputmain之前声明和Silkscreen是,如果他们两个人run声明的run声明。

所以主要的问题是如何使它的输入和字体公开 - 或者至少可以在run

回答

1

问题是,如果我想进行一些操作,它无法检测到SilkScreen,这意味着(至少我认为)main中的变量不公开。

正确。局部变量在声明的方法或块之外不可见。

最直接的解决方案是在您的类中声明变量并在main方法(或构造函数)中初始化它们。