简体   繁体   English

Applet - KeyListener无法正常工作

[英]Applet - KeyListener not working

When I start up my applet, I get no response from the key listener. 当我启动我的applet时,我得不到关键监听器的响应。 How do I fix this? 我该如何解决? Below is the code. 下面是代码。

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Timer;
import java.util.TimerTask;

public class Main extends Applet {
private static final long serialVersionUID = 1L;
public String mode = "";
public Graphic gr;

public void init() {
    this.setSize(400, 400);
    gr = new Graphic();
    this.add(gr);
    gr.addKeyListener(new MyKeyListener());
    TimerTask timerTask = new TimerTask() {

        @Override
        public void run() {
                    gr.requestFocus();
            gr.repaint();
        }

    };
    new Timer().scheduleAtFixedRate(timerTask, 0, 1000 / 5);

}

public void paint(Graphics g) {

}

private class MyKeyListener extends KeyAdapter {
    public MyKeyListener(){
        System.out.println("HELLO");
    }
    public void keyPressed(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_UP:
            gr.direction = Graphic.Direction.up;
            gr.move();

            break;
        case KeyEvent.VK_DOWN:
            gr.direction = Graphic.Direction.down;
            gr.move();
            break;
        case KeyEvent.VK_LEFT:
            gr.direction = Graphic.Direction.left;
            gr.move();
            break;
        case KeyEvent.VK_RIGHT:
            gr.direction = Graphic.Direction.right;
            gr.move();
            break;
        }
    }

    public void keyReleased(KeyEvent e) {

    }
}
}
    import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Shape;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class TTest extends Applet{
    @Override
    public void init() {
        // TODO Auto-generated method stub
        super.init();
        this.setSize(400, 400);
        addKeyListener(new KeyListener());

    }
    class KeyListener extends KeyAdapter{
        public KeyListener(){

        }

        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub
            super.keyPressed(e);
            switch(e.getKeyCode()){
            case KeyEvent.VK_UP:
                System.out.println("Pressed up arrow!");
                break;
            case KeyEvent.VK_DOWN:
                System.out.println("Pressed down arrow!");
                break;
            default:
                System.out.println("You pressed: " + e.getKeyCode());
            }
        }

    }
}

You must add key event listener to applet itself not to graphic object. 您必须将关键事件侦听器添加到applet本身而不是图形对象。 However, I think it is ok to add mouse event listener to objects apart from applet 但是,我认为将鼠标事件监听器添加到除applet之外的对象是可以的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM