2012-04-19 43 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) 

能否請你幫我理解這個問題。

+3

你對這條生產線有什麼期待? 'DashExplorer.keyPressed(e);' – 2012-04-19 00:08:49

+1

Java中的約定是以小寫字母開始變量。使用像你這樣的大寫字母會讓很多人認爲這是一個靜態方法調用一個類。 – unholysampler 2012-04-19 00:22:49

+0

@OliCharlesworth我相信我正試圖初始化main()函數中的函數,以便它在我運行代碼時能夠正常工作。 – SampsonStudiosLLC 2012-04-19 01:18:28

回答

1

的問題是,這條線:

DashExplorer.keyPressed(e); 

嘗試稱爲可變不在範圍/未聲明。

我不明白你在main方法中想要做什麼。 (它是一個測試工具嗎?)

顯而易見的「修復」將使用new KeyEvent(...)在那一刻創建關鍵事件,但這需要您瞭解構造函數參數。除非這是一個測試工具,否則這樣做沒有什麼意義。

3

您需要擁有一個實際監聽關鍵事件並調用相應方法的Key Listener。通常,您可以使用addKeyListener()方法將其附加到組件(例如JTextField,JPanel等)。

DashExplorer.keyPressed(e); 

正在使用尚未聲明的變量。

檢出this tutorial from oracle關於實現關鍵偵聽器。

+0

我知道這可能是解決方案,但我沒有足夠先進的理解。我所要做的就是讓它在我按下正確的鍵時打印一個短劃線。那是我現在想要做的。但是一旦我得到這個工作,我就會詳細闡述並且讓這個計劃更加深入。 – SampsonStudiosLLC 2012-04-19 01:20:48

+0

我假設你現在正在寫一個控制檯應用程序?如果是這樣 - 在控制檯應用程序中捕獲按鈕(如右箭頭)很困難,因爲必須在返回輸入之前按Enter鍵。如果你正在創建一個swing應用程序,那麼很容易就可以按照我在答案 – Deco 2012-04-19 01:34:19

+0

中發佈的鏈接來做到這一點......當時真的很糟糕...我今天在學校,並且以爲我會通過在控制檯上做些事情來練習。你知道一些簡單的...我甚至不知道如何編碼與鞦韆... – SampsonStudiosLLC 2012-04-19 02:15:50