Прежде чем вы сможете это исправить, вам нужно знать, что не так, поэтому вам следует сначала спросить себя, а не почему изображение не движется, а слушатель ключа даже слушает?Если вы добавите println
операторы, подобные этому:
public void keyPressed(KeyEvent e) {
System.out.println("in keyPressed. keyCode is: " + e.getKeyCode());
toggleKey(e.getKeyCode(), true);
}
, вы увидите, что это не так, что для него требуется компонент, который способен получать фокус и который действительно имеет фокус.
Вам необходимо установить для свойства JPanel
focusable значение true, а затем присвоить его acceptFocusInWindow()
после его отрисовки.
Еще лучше - используйте привязки клавиш, поскольку они гораздо более гибкие, когда речь идет о проблемах, и представляют собой конструкцию более высокого уровня.На самом деле это то, что использует сам Swing, чтобы компоненты реагировали на нажатия клавиш.
Далее, не используйте ==
для сравнения String
с, поскольку это только проверяет, являются ли два объекта String
одним ито же самое, то, что тебя не волнует.Вместо этого вы хотите знать, имеет ли один String
те же символы в том же порядке, что и другой String
, и для этого вы хотите использовать метод String
equals(...)
или его метод equalsIgnoreCase(...)
.