Создание меню
Очень часто действия, записанные в командах меню, вызываются не только щелчком кнопки мыши, но и "горячими" клавишами-акселераторами (shortcut), действующими чаще всего при нажатой клавише CTRL. На экране в пунктах меню, которым назначены "горячие" клавиши, появляются подсказки вида CTRL + N, CTRL + O, как на рис. 13.1. "Горячая" клавиша определяется объектом класса MenuShortcut и указывается в его конструкторе константой класса KeyEvent, например:
MenuShortcut keyCreate = new MenuShortcut(KeyEvent.VK_N);
После этого "горячей" будет комбинация клавиш CTRL + N. Затем полученный объект указывается в конструкторе класса Menuitem:
Menuitem create = new Menuitem("Создать", keyCreate);
Нажатие CTRL + N будет вызывать окно создания. Эти действия, разумеется, можно совместить, например:
Menuitem open = new Menultern("Открыть…", new – MenuShortcut(KeyEvent.VK_O));
Можно добавить еще нажатие клавиши SHIFT. Действие пункта меню будет вызываться нажатием комбинации клавиш SHIFT + CTRL + X, если воспользоваться вторым конструктором:
MenuShortcut(int key, boolean useSHIFT)
…с аргументом useSHIFT == true.
Программа рисования, созданная в листинге 12.4 и показанная на рис. 12.3, явно перегружена кнопками. Перенесем их действия в пункты меню. Добавим возможность манипуляции файлами и команду завершения работы. Это сделано в листинге 13.1. Класс scribble не изменялся и в листинге не приведен. Результат показан на рис. 13.2.