Лабораторная работа: Сериализация объектов
f.setMenuBar(mb);
Если имя mb не понадобится, можно совместить два последних обращения к методам:
f.setMenuBar (new MenuBar());
Разумеется, строка меню еще пуста и пункты меню не созданы.
Каждый элемент строки меню – выпадающее меню(drop-down menu) – это объект класса Menu. Создать эти объекты и занести их в строку меню ничуть не сложнее, чем создать строку меню:
Menu mFile = new Menu («Файл»);
mb.add(mFile);
Menu mEdit = new Menu («Правка»);
mb.add(mEdit);
Menu mView = new Menu («Вид»);
mb.add(mView);
Menu mHelp = new Menu («Справка»);
mb.setHelpMenu(mHelp);
и т.д. Элементы располагаются слева направо в порядке обращений к методам add(), как показано на рисунке 1. Во многих графических системах принято меню Справка (Help) прижимать к правому краю строки меню. Это достигается обращением к методу setHelpMenu(), но фактическое положение меню Справка определяется графической оболочкой.
Рисунок 2. Система меню
Затем определяем каждое выпадающее меню, создавая его пункты. Каждый пункт меню – это объект класса MenuItem. Схема его создания и добавления к меню точно такая же, как и самого меню:
MenuItem create = new MenuItem («Создать»);
mFile.add(create);
MenuItem open = new MenuItem («Открыть…»);
mFile.add(open);
и т.д. Пункты меню будут расположены сверху вниз в порядке обращения к методам add().
Часто пункты меню объединяются в группы. Одна группа от другой отделяется горизонтальной чертой. На рисунке 1 черта проведена между командами Открыть и Отправить. Эта черта создается методом addSeparator() класса Menu или определяется как пункт меню с надписью специального вида – дефисом:
mFile.add (new MenuItem(» –»));
Интересно, что класс Menu расширяет класс MenuItem, а не наоборот. Это означает, что меню само является пунктом меню, и позволяет задавать меню в качестве пункта другого меню, тем самым организуя вложенные подменю:
Menu send = new Menu («Отправить»);
mFile.add(send);
Здесь меню send добавляется в меню mFile как один из его пунктов. Подменю send заполняется пунктами меню как обычное меню.
Часто команды меню создаются для выбора из них каких-то возможностей, подобно компонентам checkbox. Такие пункты можно выделить щелчком кнопки мыши или отменить выделение повторным щелчком. Эти команды – объекты класса CheckboxMenuItem: