У меня есть что-то вроде уникальной проблемы. В настоящее время я пытаюсь кодировать события мыши в свою программу, своего рода игровой движок. Моя проблема:
Когда мышь щелкают / отпускают, я хочу вызвать код, который уже был написан, как действие для клавиши Enter.
В моем классе Binds я связываю ввод с моим действием следующим образом:
public class Binds extends InputMap
{
public Binds(JPanel object)
{
// InputMap stuff
InputMap inputMap = object.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), "ESCAPE");
}
}
С соответствующей ActionMap:
ActionMap actionMap = game.getActionMap(); //game is an object which extends JPanel.
actionMap.put("ENTER", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e)
{
//A very excessive amount of code
}
}
Я не хочу копировать- вставьте код в ActionMap и хотели бы сохранить код простым. Есть ли способ связать мой MouseEvent / MouseListener так, чтобы он вручную выполнял этот код?
Два метода, о которых я думал, но не могу реализовать, включают:
- Добавление MouseListener для inputMap
- Вызов вручную кода ActionMap в методе mouseClicked (MouseEvent e).
Я пытался найти способы выполнения того и другого, но, похоже, не существует способа делать это. Кроме того, у меня нет ActionListeners в моем коде. Я использую их с моими кнопками J, но не с привязками клавиш. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Что я смогу сделать? Большое спасибо за вашу помощь.