Классы элементов меню
Едва ли какое-то современное приложение сможет обойтись без полосы меню в окне. Поэтому в языке Java имеются сразу несколько классов для создания меню, унаследованных от класса MenuComponent. Первый из них, MenuBar, это основной класс всей системы меню, служащий контейнером для других классов. Когда вы создаете окно, то в качестве ссылки на добавляемое меню нужно передать ссылку на класс MenuBar.
Следующий класс Menu на полосе меню отображается как пункт выбора, который, если по нему щелкнуть, раскрывается в виде странички с пунктами выбора (pop-up menu). Сами же элемены выбора меню обычно реализуются как экземпляры классов MenuItem (простой элемент выбора) и CheckboxMenuItem (отмечаемый элемент выбора). Взгляните на пример создания полнофункциональной полосы меню:
// Добавление полосы меню в окно класса Frame public class NewWindow extends Frame { public NewWindow() { // Создаем полосу меню MenuBar menuBar = new MenuBar(); // Создаем первое меню // Второй аргумент true говорит // о том, что меню отрываемое. // Эта опция пока не работает // в Windows Menu menu1 = new Menu("Menu 1", true); menuBar.add(menu1); // Создать и добавить первый пункт // первого меню // Это обычный элемент меню MenuItem item1_1 = new MenuItem("Item #1"); menu1.add(item1_1); // Создать и добавить второй пункт // первого меню // Это отмечаемый элемент меню CheckboxMenuItem item1_2 = CheckboxMenuItem("Item #2"); menu1.add(item1_2); // Создать и добавить второе меню Menu menu2 = new Menu("Menu 2"); menuBar.add(menu2); // Создать и добавить меню // следующего уровня Menu nextLevel = New Menu("Next Level Menu"); menu2.add(nextLevel); } ... }
Как видите, создание меню хотя и муторный, но вовсе не сложный процесс. Если вы обратили внимание, то во второе меню добавляется не пункт выбора класса MenuItem, а меню класса Menu. Это приводит к тому, что при нажатии на пункт 2 полосы меню рядом появляется следующее меню, выбрав из которого Next Level Menu получили очередное меню. Таким способом в Java реализовано каскадирование меню.