2013-02-27 100 views
0

我想实现一个keylistener在我的程序中使用箭头键移动汽车。 这是我的代码。Java的keylistener使用箭头键移动车

package moveCar; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class CPanel extends JPanel{ 
private static final long serialVersionUID = 1L; 
CarComponent component; 
public CPanel() { 
    component = new CarComponent(); 
    JButton startButton = new JButton("Start"); 
    JButton stopButton = new JButton("Stop"); 
    startButton.addActionListener(new StartAction()); 
    stopButton.addActionListener(new StopAction()); 

    JPanel buttonPanel = new JPanel(); 
    buttonPanel.setLayout(new FlowLayout()); 
    buttonPanel.add(startButton); 
    buttonPanel.add(stopButton); 

    this.setLayout(new BorderLayout()); 
    this.add(buttonPanel, BorderLayout.NORTH); 
    this.add(component, BorderLayout.SOUTH); 
} 

class StartAction implements ActionListener { 
    public void actionPerformed(ActionEvent e){ 
     component.setAnimation(true); 
    } 
} 
class StopAction implements ActionListener { 
    public void actionPerformed(ActionEvent e){ 
     component.setAnimation(false); 
    } 
} 
} 

package moveCar; 

import javax.swing.*; 

public class CarViewer { 
CPanel a = new CPanel(); 
public CarViewer(){ 
    a.add(new CPanel()); 
} 
public static void main(String[] arg){ 
    JFrame frame = new JFrame(); 
    //frame.setSize(800,200); 
    frame.setTitle("This is strange ....."); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setContentPane(new CPanel()); 
    frame.pack(); 
    frame.setVisible(true); 
} 
} 

我相信这是你需要的所有代码,但是如果你需要我的其他代码,我可以得到它。 谢谢

+2

那么...你的问题是什么? – 2013-02-27 16:35:47

+0

请告诉我们您的问题 – 2013-02-27 16:37:03

+1

在哪里声明了KeyListener?无论如何,Swing使用['KeyBinding's](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)而不是'KeyListener'。请参阅[这个相似的答案](http://stackoverflow.com/questions/13770185/why-isnt-the-keylistener-working/13770483#13770483) – 2013-02-27 16:48:01

回答

-1

你必须使用addKeyListener:

addKeyListener(yourKeyListener); 

看到这个minimal example

0

您尚未将任何键绑定添加到您的应用程序。有关如何执行此操作的信息,请查看swing key bindings上的Java教程。

+0

我不知道如何实现键盘绑定 – user2116211 2013-03-13 02:53:51

+0

然后阅读教程是最好的地方开始。 – vainolo 2013-03-13 19:35:58