2017-05-10 5 views
0

私は初心者です。今は、私が文字を画面上で動かすことができるプログラムを作成しようとしています。キー。私が書いた他のものの大部分はテストされていますが、単純なエラーのためコンパイルできません。プログラムはred.repaintに到達したいくつかの理由で、何らかの理由で、このオブジェクトは、以下のスレッドに入れられたときに既存のものとして認識されません。

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(); 

    } 

} 

、私はこのエラーを取得する:

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

オブジェクトが中にそれが先に呼ばれているとして存在するものとして認識されていない理由を私は理解していませんプログラム。

+0

main' 'から赤の表示方法を変数別の方法で?これらの方法は独立したものです –

答えて

1

私はVariable Scopeを読むことをお勧めします。変数はスコープ内でのみ使用でき、スコープ外からアクセスするとエラーが発生します。これにより、変数 "i"を多数のループのイテレータとして使用するか、変数 "tmp"を使用するいくつかの関数を作成するなど、異なるインスタンスで変数名を再利用することができます。あなたは、コードの数千(またはそれ以上)のラインに数百を取得する場合それ以外の場合は、あなたの変数名は、「the_iterator_for_loop_in_class_foo」のようなばかげなります

ここではチュートリアルです:http://www.java-made-easy.com/variable-scope.html

+0

ああ、意味があります。私はそこにそれを使用する前に変数を渡す必要があります。 – cakeLoveOverlord

+0

また、多くのクラスメソッドで変数にアクセスする必要がある場合は、そのクラスのメンバーとして定義することができます。メソッド間で変数を前後に渡すのではなく、代わりに各メソッド内からクラスメンバーにアクセスできます。 –

関連する問題