出于某种原因,当放入下面的线程时,此对象不会被确认为存在

时间:2017-05-10 23:06:53

标签: java

我是一名初学程序员,现在我正在尝试创建一个程序,在其中我可以使用我的键在屏幕上移动角色。我编写的大多数其他内容已经过测试,但由于一个简单的错误,我无法编译它。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.ArrayList;

public class TryGUI
{

   public static void main(String[] args) 
   {
      Gladiator red = new Gladiator(200, 200);
      java.awt.EventQueue.invokeLater(new Runnable() 
      {
         public void run() 
         {
            CreateAndShowGUI();
         }
      });
   }

   private static void CreateAndShowGUI()
   {
      JFrame newGUI = new JFrame("New");
      newGUI.pack();
      newGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      newGUI.getContentPane().add(new ManageGladiator());
      //newGUI.setLocationRelativeTo(null);
      newGUI.setVisible(true);
      red.repaint();

   }

}

由于某种原因,当程序到达red.repaint时,我收到此错误:

TryGUI.java:30: error: cannot find symbol
      red.repaint();
      ^
  symbol:   variable red
  location: class TryGUI
1 error

我不明白为什么对象不被识别为现有的,因为它在程序中早先被调用。

1 个答案:

答案 0 :(得分:1)

我建议阅读变量范围。变量仅在其范围内可用,并且从其范围外部访问它将引发错误。这允许您在不同的实例中重用变量名称,例如使用变量“i”作为许多循环的迭代器,或创建多个使用变量“tmp”的函数。否则,当你得到几百到几千(或更多)行代码时,你的变量名就会像“the_iterator_for_loop_in_class_foo”那样变得荒谬了

这是一个教程:http://www.java-made-easy.com/variable-scope.html