Добавление сочетаний клавиш в апплет - PullRequest
2 голосов
/ 20 января 2012

Как добавить сочетания клавиш в апплет Java?

У меня было задание (я изучаю компьютерные науки с отличием), чтобы мое имя вращалось по кругу. Я использовал бесконечный цикл, и каждый раз, когда я хочу закончить, я должен идти в диспетчер задач и завершать программу. Можно ли добавить ярлык для выхода из апплета?

Например, если я нажму пробел, он изменится на другую часть программы.

Я просмотрел "Как использовать привязки клавиш" на сайте Oracle, но не смог понять.

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Если вы используете Swing (если вы создаете JApplet), тогда да, связывание клавиш - это путь.Что с ними вас смущает?

Кстати, я знаю, что это не имеет прямого отношения к вашему вопросу, но если ваш апплет является Swing JApplet, я бы не использовал бесконечный цикл для анимации, а скорееиспользуйте таймер качания.Если вы используете бесконечный цикл, вы должны позаботиться о том, чтобы а) выполнить бесконечный цикл в фоновом потоке и б) сделать большинство вызовов Swing из цикла в потоке диспетчеризации событий Swing (или EDT), иначе вы рискуете заморозить основнойКачаем нить.Swing Timer делает все это за вас, и поэтому его гораздо проще использовать.

1 голос
/ 20 января 2012

Все, что говорится в этом руководстве, требует KeyStroke, некоторого ключа Object и Action для создания привязки ключа.

Чтобы создать KeyStroke, взгляните на статические вспомогательные методы , они должны объяснить, как получить правильный KeyStroke, который вам нужен.

Вы можете использовать любой старый Object в качестве ключа (Object key = new Object()).

Последнее, что вам нужно, это создать свой Action. Я бы предложил расширить AbstractAction, поскольку он уже реализует многие методы Action для вас.

Чтобы связать ключ, сделайте следующее:

JComponent c = ...
KeyStroke keyStroke = ...
Object key = ...
Action a = ...

c.getInputMap().put(keyStroke, key);
c.getActionMap().put(key, a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...