Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
занятие14.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
258 Кб
Скачать
☆

На заметку:

То обстоятельство, что для пунктов меню обработчик регистрируется методом addActionListener (), то есть таким же, как и для кнопки, неслучайно. Дело в том, что класс JMenuItem является подклассом класса AbstractButton. Другими словами, пункт меню - это нечто близкое к кнопке.

Положение и размер панели меню определяется командой setBounds(1,1,frame.getWidth()-1,frame.getHeight()/10), после чего командой frame.add(this) панель меню добавляется в окно.

Также в программе используется специальная панель. Она содержит четыре текстовых метки. Область панели разбивается на четыре одинаковые ячейки, формируя таблицу размерами 2x2. Каждая такая ячейка содержит текстовую метку. Ячейки в первом столбце содержат стационарный (неизменный текст): По горизонтали и По вертикали. Текст меток во втором столбце может меняться в зависимости от выбранного пункта меню, определяющего направление перемещения окна.

Упомянутая панель описывается в классе MyPanel, который наследует класс JPanel. Класс имеет открытые поля HLab и VLab - объектные переменные класса JLabel. Это те метки, текстовые значения которых будут меняться при обработке события выбора пункта меню. Вначале (по умолчанию) текстовым значениям этих меток присваивается значение "на месте". Доступ к полям будем получать извне класса, поэтому поля открытые.

Изюминкой конструктора класса MyPanel является команда setLayout (new GridLayout (2, 2, 3, 3) ). Здесь аргументом метода подключения компоновщика setLayout() указывается анонимный объект класса GridLayout(). Командой new GridLayout(2,2,3,3) создается объект менеджера компоновки, которым область панели разбивается на ячейки, размещенные в две строки (первый аргумент конструктора класса GridLayout) и два столбца (второй аргумент конструктора класса GridLayout). Третий и четвертый аргументы конструктора класса GridLayout определяют зазоры (в пикселях) между границами ячеек. При добавлении компонентов в панель они последовательно заносятся в ячейки слева направо, сверху вниз.

Класс MyFrame для реализации окна наследует класс JFrame. У класса от­крытое поле move — объектная переменная класса MyLabe 1. Это панель с тек­стовыми метками. Две из них будем интенсивно менять в процессе перебора пунктов меню. Еще у класса есть числовое поле-массив step. Это массив из двух элементов, значения которых определяют направление и интервал шага (в пикселях) для перемещения окна (соответственно, по горизонтали и вертикали). Поскольку это поле закрытое, то для доступа к нему описываются также открытые методы setH () и setv () для изменения значения элементов поля-массива. Элементы имеют начальные нулевые значения.

У конструктора класса такие аргументы: текстовое значение для названия окна (отображается в строке заголовка окна), а также ширина и высота Окна в пикселях.

Начальное значение для шага перемещений задается командой step=new int[]{0,0}. Для применения заголовка используем метод setTitle(). Положение и размеры окна определяем с помощью метода setBounds (). Также командой setLayout (null) отключаем менеджер компоновки для окна. Реакция на закрытие окна через системную пиктограмму задается уже знакомой нам командой setDefaultCloseOperation (EXIT_ON_CLOSE). Создание (и автоматическое добавление) кнопок выполняется командами new MyButton (this,true) и new MyButton(this,false). А панель меню создается командой new MyMenuBar(this). Создание метки с изображением выполняется инструкцией new MylconLabel(this).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]