创建全局文件输入

时间:2013-07-24 16:38:32

标签: java fonts io override main

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

我加载一个.ttf文件(很明显是一个自定义字体)并为它创建一个Font-type变量(或者它是一个常量?):

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编程的新手,所以我想问一下这是什么意思?

如果在input之前声明main而在Silkscreen中声明run,如果在run中声明了它们,则会发生同样的情况。< / p>

所以主要的问题是如何公开输入和字体 - 或至少在run中提供?

1 个答案:

答案 0 :(得分:1)

  

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

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

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