2013-10-18 65 views
0

我不知道我一直在搜寻的是什么问题,但我必须想象我在搜索错误。是否有办法的人的任何实例做了以下内容:允许用户更改应用程序的键盘按键

上的选项屏幕,允许的用户改变什么键在他们的应用程序做什么:

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

我并不懒惰,比如说,我刚刚看到有这么多游戏,并且我不想重新发明轮子。

任何人都可以给我一个如何做到这一点的例子或请连接我吗?非常感谢。

+0

您想更改哪个应用程序? –

+0

我有一个游戏,我想让我的用户选择哪个键在游戏中“向上移动”。也许这样做更有意义,它并不是要改变键盘的功能,而是改变哪些键做什么。 – KisnardOnline

回答

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中工作。

+0

真棒谢谢,我会给这个镜头 – KisnardOnline