2012-04-19 13 views
0

ユーザーからのキー入力を待ち受けるJavaアプリケーションを作成しようとしています。これは私のコードです...私は私のコードをコンパイルしようとするとJava "e"は、keyPressed関数の変数として解決できません。

import java.awt.event.KeyEvent; 

public class DashExplorerMain { 
    public static void main(String[] args) { 
     DashExplorerMain dashExplorer = new DashExplorerMain(); 
     dashExplorer.keyPressed(e); 
    } 

    public void keyPressed(KeyEvent e) { 
     int keyCode = e.getKeyCode(); 
     switch(keyCode) { 
      case KeyEvent.VK_UP: 
       // handle up 
       break; 
      case KeyEvent.VK_DOWN: 
       // handle down 
       break; 
      case KeyEvent.VK_LEFT: 
       // handle left 
       break; 
      case KeyEvent.VK_RIGHT : 
       // handle right 
       System.out.println("-"); 
       break; 
      } 
     } 
    } 
} 

、私は次のエラーを取得しています...

Exception in thread "main" java.lang.Error: Unresolved compilation problem: e cannot be resolved to a variable 
    at DashExplorerMain.main(DashExplorerMain.java:11) 

あなたは私が問題を理解する助けてくださいでした。範囲内にない変数と呼ばれる

DashExplorer.keyPressed(e); 

試み/宣言されていません:

+3

このラインで何が起こると思われますか? 'DashExplorer.keyPressed(e);' –

+1

Javaの規約は小文字で変数を始めることです。あなたのように大文字を使用すると、多くの人がクラスで静的メソッド呼び出しと考えるようになります。 – unholysampler

+0

@OliCharlesworth私は私がコードを実行するときに動作するようにmain()関数で関数を初期化しようとしていると思います。 – SampsonStudiosLLC

答えて

1

問題は、この行があることです。

mainメソッドで何をしようとしているのか分かりません。 (テストハーネスかどうか)

明白な「修正」は、new KeyEvent(...)を使用してその時点でキーイベントを作成することですが、コンストラクタの引数を理解する必要があります。これがテストハーネスでない限り、それを行うのはあまり意味がありません。

3

実際にキーイベントをリッスンし、適切なメソッドを呼び出すキーリスナを用意する必要があります。通常は、addKeyListener()メソッドを使用してコンポーネント(JTextField、JPanelなど)にアタッチします。

DashExplorer.keyPressed(e); 

は、宣言されていない変数を使用しています。

キーリスナーの実装については、this tutorial from oracleを参照してください。

+0

これはおそらく解決策であることはわかっていますが、私は理解するのに十分進んでいません。私がしようとしているのは、右のキーを押すと、ダッシュが印刷されるようにすることだけです。それが今私がしたいことです。しかし、いったんそれが働くようになると、私は精緻化してプログラムをもっと深くするでしょう。 – SampsonStudiosLLC

+0

私は今あなたがコンソールアプリケーションに書いていると仮定していますか?そうであれば、入力が返される前にEnterを押す必要があるので、コンソールアプリケーションで右矢印などのキー押下を取得することは困難です。あなたがスイングアプリケーションを作成している場合は、私が答えた – Deco

+0

に掲載されたリンクをたどることは簡単です...嫌な気分...私は今日学校に通っていて、コンソールで何かをして練習すると思っていました..ああ、単純なことを知っている...私もスイングでコードする方法を知っていない... – SampsonStudiosLLC

関連する問題