2014-12-13 194 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然後播放聲音。

相關問題