0

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

我加载一个 .ttf 文件并为其创建一个字体类型变量(或者它是一个常量?):

public class Project extends JPanel implements Runnable
{

 [...] //global variables

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

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

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

无论如何,如果我这样做:

public class Project extends JPanel implements Runnable
{

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

同样的情况发生在 ifinput之前声明mainSilkscreen声明 inrun的情况下,如果它们都声明在 中run

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

4

1 回答 1

1

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

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

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

于 2013-07-24T16:53:00.100 回答