允许用户更改应用程序的键盘键

时间:2013-10-18 15:17:00

标签: java keyboard

我不知道我一直在寻找什么是错的,但我不得不想象我的错误。有没有人做过以下事情的例子:

在选项屏幕上,允许用户更改在应用程序中执行操作的键:

-i.e。将箭头更改为W键,或将向下箭头更改为S键。 WASD与ULDR。

我不是很懒,我说,我刚看过很多有这种设置的游戏,我不想重新发明轮子。

有人能给我一个如何做到这一点或链接我的例子吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

在这里查看java回调引用http://www.javaworld.com/javatips/jw-javatip10.html

这个想法是你创建一个密钥和回调字典,就像上一个网站(字典参考http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html)中描述的那样。

只声明了一个方法的回调:

public interface MovementCallbackInterface {

    public void method();
}

然后创建如下的类:

public class MoveForward implements MovementCallbackInterface {

    public void method() {
        //Move forward code
    }

然后你创建字典:

Dictionary<KeyEvent, MovementCallbackInterface> d;

在运行时为每个键指定一个回调,如

MoveForward mf = new MoveForward();
d.put(KeyEvent.VK_W, mf);

如果要切换键,只需修改字典中的键分配即可指向新的回调。

d.remove(KeyEvent.VK_W);
d.put(KeyEvent.VK_U, mf);

然后每次按下一个键,你在字典中搜索该键并调用MovementCallbackInterface对象的方法,如

d.get(KeyEvent.VK_W).method().

也许有一种最快的方式,在c ++中你可以使用函数指针,或者在c#中委托,它只包含函数而不是整个类。无论如何,这种方法适用于java。