Я пишу приложение на Java, где мне нужно, чтобы одна вещь случалась, когда пользователь нажимает клавиши букв и что-то другое, когда пользователь нажимает ENTER, но я не могу получить ключевое имя, когда я нажимаю ENTER, только новый линия.Как я могу получить KeyStroke для клавиши ENTER с помощью ActionEvent?
Я думаю, что я должен использовать getKeyStroke, но я не уверен, что это возможно, потому что я использую ActionEvent.
Это то, что я делал до сих пор:
panelMaster.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("A"), "doSomething");
panelMaster.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("B"), "doSomething");
panelMaster.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("C"), "doSomething");
panelMaster.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("ENTER"), "doSomething");
panelMaster.getActionMap().put("doSomething", anAction);
Тогда у меня есть отдельный класс с действий.
class AnAction extends AbstractAction{
public void actionPerformed(ActionEvent e) {
System.out.println("Received: " + e.getActionCommand());
}
}
Когда я ввожу две серии «а», затем «Ъ», то «с», а затем «ENTER» это то, что мой выход выглядит следующим образом:
Received: a
Received: b
Received: c
Received:
Received: a
Received: b
Received: c
Received:
Если вы хотите что-то другое должно произойти, когда вы используете Ent er, затем создайте собственное действие. Не пытайтесь использовать одно действие для всех клавиш. – camickr
Хорошо, я попробовал, и хотя он выполняет эту работу, потому что это отдельный класс Action, я все еще не могу использовать «e.getKeyStroke() или что-то подобное, что скажет мне, какой ключ был нажат». Я не знаю. Думаю, я, наверное, делаю что-то действительно глупое. –