首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用KeyListener?

如何使用KeyListener?
EN

Stack Overflow用户
提问于 2018-06-12 09:54:39
回答 2查看 0关注 0票数 0

我目前正在试图在我的程序中实现一个keylistener,以便在按下箭头键时执行一个操作,程序中的对象向左或向右移动。

这是我程序中的移动方法

代码语言:javascript
复制
public void moveDirection(KeyEvent e)
    {
        int move = 0;
        int r = K.getRow();
        int c = K.getCol();
        if (e.getKeyCode() == 39) move = 1; //KeyEvent.VK_RIGHT
        if (e.getKeyCode() == 37) move = 2; //KeyEvent.VK_LEFT
        //if (e.getKeyCode() == KeyEvent.VK_DOWN) move = 3;

        switch (move)
        {
            case 1: if (inBound(r, c+1))
                        K.setLocation(r ,c+1); 
                    if (inBound(r, c-1) && frame2[r][c-1] == K)
                        frame2[K.getRow()][K.getCol()-1] = null; 
                    break; //move right 39
            case 2: K.setLocation(K.getRow(), K.getCol()-1); break; //move left 37
            //case 3: b.setLocation(b.getRow()+1, b.getCol()); break; //move down
            default: return;
        }        
        processBlockList();
    }
EN

回答 2

Stack Overflow用户

发布于 2018-06-12 18:20:55

http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html 查看本教程

如果它是一个基于UI的应用程序,那么“我还需要知道我需要添加到我的代码中,以便我的程序在转移到另一个方法之前等待约700毫秒的密钥输入”,你可以使用GlassPane或Timer类来实现需求。

关键事件:

代码语言:javascript
复制
public void keyPressed(KeyEvent e) {

    int key = e.getKeyCode();

    if (key == KeyEvent.VK_LEFT) {
        dx = -1;
    }

    if (key == KeyEvent.VK_RIGHT) {
        dx = 1;
    }

    if (key == KeyEvent.VK_UP) {
        dy = -1;
    }

    if (key == KeyEvent.VK_DOWN) {
        dy = 1;
    }
}

检查这个游戏的例子http://zetcode.com/tutorials/javagamestutorial/movingsprites/

票数 0
EN

Stack Overflow用户

发布于 2018-06-12 19:40:45

除了使用KeyListener(如其他人的答案所示)之外,有时你必须确保你使用的JComponent是Focusable。这可以通过添加到你的组件来设置(如果你是子类):

代码语言:javascript
复制
@Override
public void setFocusable(boolean b) {
    super.setFocusable(b);
}

并通过添加到你的构造函数:

代码语言:javascript
复制
setFocusable(true);

或者,如果你正在从父类/容器调用该函数:

代码语言:javascript
复制
JComponent childComponent = new JComponent();
childComponent.setFocusable(true);

然后做其他人提到的所有KeyListener的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档