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

我加载一个.ttf文件并为其创建一个Font-type变量(或者是一个常量?):

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

如果在input之前声明了main并且在Silkscreen中声明了run,或者如果两个都在run中声明,则会发生相同的情况。

因此,主要问题是如何公开输入和字体(至少在run中可用)?

最佳答案

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


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

最直接的解决方案是在类中声明变量,然后在main方法(或构造函数)中对其进行初始化。

08-26 02:51