[英]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.