2011-11-25 68 views
1

我執行擴展javax.swing.JFrame中 我增加了內部類KeyInputHandler中X與下面的代碼的類X:如何正確處理Java中的用戶輸入?

private class KeyInputHandler extends KeyAdapter { 
public void keyPressed(KeyEvent e) { 
if (e.getKeyCode() == KeyEvent.VK_LEFT) { 


} 
if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 
    ... 
} 
if (e.getKeyCode() == KeyEvent.VK_UP) { 
    ... 
} 
if (e.getKeyCode() == KeyEvent.VK_SPACE) { 
    ... 
} 
if (e.getKeyCode() == KeyEvent.VK_B) { 
    ... 
} 
} 
} 

但由於某些原因,它不承認我的輸入。我需要向類X添加其他內容嗎?

+0

你能發表工作代碼嗎?只是創建這個類並不意味着它會被調用。 – Kane

+1

http://stackoverflow.com/questions/5048536/keyadapter-is-not-responding-java 你打電話給addKeyListener了嗎? –

回答

3

KeyListeners可能會非常棘手,而且最重要的只有當它們添加到的組件具有焦點時才能工作。否則,你會被擊沉。此外,您不會在您已發佈的代碼中顯示您已將KeyListener添加到任何組件的位置。是的,你有類,但你真的使用這個類來創建一個對象並將它添加到任何東西?

但是儘管如此,對於您的應用程序和問題類型而言,您最好使用key bindings(查看鏈接),這是一個更高層次的概念,當涉及到焦點問題時更加靈活。

編輯
在評論中問道,現在的問題是

什麼是重點?

根據Focus Subsytem tutorial,當GUI組件正在接收鍵盤輸入時,它有焦點。通常這通過以某種方式突出顯示。