小程序 - 的KeyListener不工作 [英] Applet - KeyListener not working

查看:245
本文介绍了小程序 - 的KeyListener不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我开始了我的小程序,我没有得到任何来自关键听众的反应。我该如何解决这个问题?下面是code。

 进口java.applet.Applet中;
进口java.awt.Graphics;
进口java.awt.event.KeyAdapter;
进口java.awt.event.KeyEvent中;
进口java.util.Timer中;
进口java.util.TimerTask中;公共类主要扩展的Applet {
私有静态最后的serialVersionUID长1L =;
公共字符串模式=;
公共图形克;公共无效的init(){
    this.setSize(400,400);
    GR =新的图形();
    this.add(克);
    gr.addKeyListener(新MyKeyListener());
    TimerTask的TimerTask的=新的TimerTask(){        @覆盖
        公共无效的run(){
                    gr.requestFocus();
            gr.repaint();
        }    };
    新的定时器()scheduleAtFixedRate(TimerTask的,0,1000 / 5);}公共无效漆(图形G){}私有类MyKeyListener扩展KeyAdapter {
    公共MyKeyListener(){
        的System.out.println(HELLO);
    }
    公共无效键pressed(KeyEvent的E){        开关(e.getKey code()){
        案例KeyEvent.VK_UP:
            gr.direction = Graphic.Direction.up;
            gr.move();            打破;
        案例KeyEvent.VK_DOWN:
            gr.direction = Graphic.Direction.down;
            gr.move();
            打破;
        案例KeyEvent.VK_LEFT:
            gr.direction = Graphic.Direction.left;
            gr.move();
            打破;
        案例KeyEvent.VK_RIGHT:
            gr.direction = Graphic.Direction.right;
            gr.move();
            打破;
        }
    }    公共无效调用keyReleased(KeyEvent的E){    }
}
}


解决方案

 进口java.applet.Applet中;
进口java.awt.Graphics;
进口java.awt.Shape中;
进口java.awt.event.KeyAdapter;
进口java.awt.event.KeyEvent中;
进口java.awt.event.KeyListener;公共类TTEST扩展的Applet {
    @覆盖
    公共无效的init(){
        // TODO自动生成方法存根
        super.init();
        this.setSize(400,400);
        addKeyListener(新的KeyListener());    }
    一流的KeyListener扩展KeyAdapter {
        公众的KeyListener(){        }        @覆盖
        公共无效键pressed(KeyEvent的E){
            // TODO自动生成方法存根
            super.key pressed(E);
            开关(e.getKey code()){
            案例KeyEvent.VK_UP:
                的System.out.println(pressed向上箭头!);
                打破;
            案例KeyEvent.VK_DOWN:
                的System.out.println(pressed向下箭头!);
                打破;
            默认:
                的System.out.println(你pressed:+ e.getKey code());
            }
        }    }
}

您必须添加关键事件监听器不小应用程序本身的图形对象。不过,我认为它是确定的鼠标事件监听器除了小程序添加到对象

When I start up my applet, I get no response from the key listener. 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. However, I think it is ok to add mouse event listener to objects apart from applet

这篇关于小程序 - 的KeyListener不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆