Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java awt键盘输入的首选方式是什么_Java_Awt_Keyboard Input - Fatal编程技术网

java awt键盘输入的首选方式是什么

java awt键盘输入的首选方式是什么,java,awt,keyboard-input,Java,Awt,Keyboard Input,我在互联网上看到了许多相互矛盾的建议,包括这里关于如何使用awt和swing处理输入的建议,有几个人已经在编写我的代码,而且代码一团糟 选择权 实现KeyListener或扩展KeyAdapter ^对于应用程序的主类,请使用匿名类、私有类或外部输入管理类 将事件对象发送到每个需要知道输入的对象,发送一组按下的键,或使每个类成为侦听器并将其添加到主类 所以我可以 public class Board extends JPanel implements KeyListener{ pub

我在互联网上看到了许多相互矛盾的建议,包括这里关于如何使用awt和swing处理输入的建议,有几个人已经在编写我的代码,而且代码一团糟

选择权

  • 实现KeyListener或扩展KeyAdapter
  • ^对于应用程序的主类,请使用匿名类、私有类或外部输入管理类
  • 将事件对象发送到每个需要知道输入的对象,发送一组按下的键,或使每个类成为侦听器并将其添加到主类
所以我可以

public class Board extends JPanel implements KeyListener{
    public Board(){addKeyListener(this);}}

实现KeyListener
可以替换为
扩展KeyAdapter
,但我不会这么做,因为java只允许一个父类

还有,我不知道这是怎么进入我的代码的

private boolean [] keys = new boolean[256];
public void keyPressed(KeyEvent e) {keys[e.getKeyCode()] = true;}
public void keyReleased(KeyEvent e) {keys[e.getKeyCode()] = false;}
public boolean isKeyDown(int k) {return keys[k];}


确实,什么是awt键盘输入的最佳实现?

“ImplementKeyListener..”您在这些搜索中没有看到任何相关内容?顺便问一下,代码是否使用awt组件?如果是的话。。为什么是AWT而不是Swing?关于放弃使用AWT组件的许多好理由,请参见上的回答。如果您需要支持旧的基于AWT的API,请参阅。@AndrewThompson我正在开发一个基于2d AWT的游戏。在这样做的过程中,我发现了许多控制的方法。这个问题仍然是使用awt进行输入的最佳方式(当涉及到爱好时,生活也很糟糕)
public class Board extends JPanel {
    private class PrivateListener implements KeyListener{...} 
    public Board(){addKeyListener(new PrivateListener());
public class PublicListener implements KeyAdapter{...}
public class Board extends JPanel {
    public Board(){addKeyListener(new PublicListener());
addKeyListener(this);
addKeyListener(obj1);
addKeyListener(obj2);
private boolean [] keys = new boolean[256];
public void keyPressed(KeyEvent e) {keys[e.getKeyCode()] = true;}
public void keyReleased(KeyEvent e) {keys[e.getKeyCode()] = false;}
public boolean isKeyDown(int k) {return keys[k];}
public void keyPressed(KeyEvent e) {
    obj1.keyPressed(e);
    obj2.keyPressed(e);
}