簡體   English   中英

Java鍵綁定無效

[英]Java Key Binding Not Working

我有以下代碼:

        frame = new JFrame();
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            isRunning = false;
        }
    });
    frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    frame.setSize(width * scale, height * scale);
    frame.setResizable(false);
    frame.setVisible(true);

    JPanel panel = new JPanel();
    frame.add(panel);
    panel.setFocusable(true);
    panel.requestFocusInWindow();

    // KeyBinds
    KeyManager.start(panel);

在KeyManager中:

    public static void start(JComponent comp) {
    comp.requestFocus();
    comp.requestFocusInWindow();

    comp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0), "w");
    comp.getActionMap().put("w", new AbstractAction() {
        public void actionPerformed(ActionEvent e) {
            pressedKeys.put(KeyStroke.getKeyStroke("w"), true);
        }
    });

但是我的代碼有時只能工作。 哪里有問題嗎? 是否需要添加一行代碼?

好吧,我解決了這個問題。 我使用了一個哈希圖(擊鍵,布爾值)來存儲鍵值。 我讀到使用KeyStroke.getKeyStroke(String key)並不是一個好主意,所以我將哈希映射更改為使用(Integer,Boolean),整數為KeyEvent.VK_(key)。 現在可以工作了:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM