2014-03-02 41 views
1

public class MainFrame extends JFrame implements ActionListener {不能讓一個KeyListener的工作

再後來就:

public void keyPressed(KeyEvent e) { 
     if (e.getKeyCode() == e.VK_LEFT) { 
     int x = ball.getX() + 1; 
     ball.setX(x); 
     } 
     } 

但似乎當我認爲應該給予迴應它不會。

如果我添加keylistener而不是actionlister,我無法編譯我無法理解的東西。我是新來的Java不過我已經習慣了C#

+0

它總是監聽事件,特別是從鍵盤。 –

+0

您是否在搜索論壇?每天都會問這個問題。您可以先閱讀本頁右側「相關」標題下的問題。基本的答案是不要使用KeyListener。而是使用'鍵綁定'。 – camickr

回答

0
  1. 你需要實現java.awt.event.KeyListener不是ActionListener偵聽關鍵事件。
  2. 您需要通過調用addKeyListener(...)將偵聽器註冊到要偵聽的元素(幀)上。

例子:

public class TestFrame extends JFrame implements KeyListener { 

    public static void main(String[] args) throws FileNotFoundException { 
     TestFrame testFrame = new TestFrame(); 
     testFrame.setSize(100, 100); 
     testFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     testFrame.addKeyListener(testFrame); 
     testFrame.setVisible(true); 
    } 

    @Override 
    public void keyTyped(KeyEvent e) { } 
    @Override 
    public void keyPressed(KeyEvent e) { 
     System.out.println(e); 
    } 
    @Override 
    public void keyReleased(KeyEvent e) { } 
}