2014-12-13 196 views
0

我对Java很新,我有一个问题让我烦恼几天。如何将字符串变量转换为KeyEvent - 一般方法

我正在构建一个小应用程序,你在键盘上按下某个键然后它执行某些操作。一般 - 它会打鼓

下面是这个例子。

private void KeyListener(java.awt.event.KeyEvent evt)   

switch (evt.getKeyCode()) { 
    case KeyEvent.VK_Q: new AePlayWave("kits/acoustic/Bass.wav").start();; 
     break; 

    case KeyEvent.VK_W: new AePlayWave("kits/acoustic/Bass.wav").start();; 
     break; 
} 

这很明确。您按Q按钮,然后您可以听到低音鼓。我只复制了部分代码,还有更多元素,比如圈套,cy等。

我已经构建了CONFIGURE KEYS选项,它将字符串传递给组合框。我在键盘上创建了包含所有字母的组合框,以便用户可以在默认不适合他/她的情况下更改布局。

我有一个公共类的变量:

Public static SnareKey1 = "Q"; 

当您更改组合框,然后SnareKey1改为让我们说 - Y(或其他)。这是行之有效的----

我的问题是:我如何将SnareKey1转移到KeyEvent。我是用正确的方法做这个还是我需要一个不同的?

+0

http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html#getExtendedKeyCodeForChar%28int%29 – 2014-12-13 10:39:33

+0

您是否将您的keyListener添加到组合框按钮中按下并实施KeyPressed事件? – SMA 2014-12-13 10:39:43

+0

首先看一下Key Bindings API [如何使用关键绑定](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html),它将是eaiser来更改给定的“操作”和密钥的关联,因为它们在逻辑上是分开的...... – MadProgrammer 2014-12-13 12:01:42

回答

0

我解决了这个问题!

你只是不能在CASE(switch语句)中使用变量。你需要不断的表达。

我已经用IF/ELSE语句解决了这个问题。

基本上,我在主窗体中添加了KeyListener,并写了IF evt.keycode = snareKey.hashcode然后播放声音。

相关问题