首頁 > Java > 主體

如何從ActionMap取得key

WBOY
發布: 2024-02-09 13:15:18
轉載
843 人瀏覽過

php小編小新今天來跟大家介紹如何從ActionMap取得key。在寫PHP程式時,我們常會使用到關聯數組(也稱為字典),而ActionMap就是常見的關聯數組。透過使用key來取得對應的值,我們可以實現更靈活的資料處理和邏輯控制。以下我們將詳細介紹從ActionMap中取得key的方法,幫助大家更能理解並應用這項技巧。

問題內容

我想知道如何從操作映射中的 AbstractAction 取得關鍵程式碼。

for (int key = 37; key <= 122; key++) {
    this.key = key;

    if(!KeyEvent.getKeyText(key).contains("Unknown keyCode")) {
                
        if(KeyInputManager.getInputManager().getOrDefault(key, null) == null)
            KeyInputManager.getInputManager().put(key, true);
                
        component.getActionMap().put(KeyEvent.getKeyText(key), new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                    int keyCode = // TODO: GET KEY CODE HERE
                    KeyInputManager.getInputManager().replace(keyCode, true);
            }
        });
        component.getInputMap().put(KeyStroke.getKeyStroke(key, 0, false), KeyEvent.getKeyText(key));
    }
}
登入後複製

我試圖將所有按鍵的狀態(按下或未按下)儲存在HashMap中,該KeyInputManager是透過getInputManager存取的。要檢查是否按下了某個鍵,我們可以使用 KeyInputManager.getKeyDown(keyCode) 這是 KeyInputManager 的程式碼

public class KeyInputManager {
    private static final HashMap<Integer, Boolean> keysDown = new HashMap<Integer, Boolean>();
    
    public static final boolean keyDown(int keyCode) {
        return keysDown.getOrDefault(keyCode, false);
    }
    
    public static HashMap<Integer, Boolean> getInputManager() {
        return keysDown;
    }
}
登入後複製

解決方法

試試這個:

int keyCode = (int) e.getActionCommand().charAt(0);
登入後複製

ActionEvent 的操作命令基本上包含鍵,並且由於您使用的是單字元鍵,因此採用第一個字元應該會為您提供整數鍵代碼。

以上是如何從ActionMap取得key的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板