Приложения на основе окон ( Frames )
Обратимся к приложениям на основе окон (форм). В простейшем случае оконные приложения следует создавать самостоятельно, включая операторы для отображения окон (форм), кнопок, списков, меню и других элементов визуального интерфейса. Ниже помещен пример приложения с кнопкой, которая обеспечивает завершение работы программы.
package win_lab; import java.awt.*; import java.awt.event.*;
public class Win_Lab extends Frame implements ActionListener{
Button bex=new Button("Exit"); public Win_Lab() { super("my window"); setLayout(null); setBackground(new Color(150,200,100)); setSize(250,250); add(bex); bex.setBounds(110,190,100,20); bex.addActionListener(this); this.show(); this.setLocationRelativeTo(null); }
public void actionPerformed(ActionEvent ae) { if(ae.getSource()==bex) System.exit(0); } public static void main(String[] args) { new Win_Lab(); } } Результат работы этой программы показан на рисунке 140
Рисунок 140. Приложение на основе окна
Приложение содержит единственный класс, но его объявление расширено:
public class lab1_2 extends Frame implements ActionListener
Указывается, что класс имеет имя Win_Lab, тип доступа public и расширяет (наследуется от) класс Frame. Класс Frame является стандартным оконным классом. Механизм наследования позволяет расширять одни классы за счет других, автоматически сохраняя методы и члены наследуемого класса с правами доступа типа public (и в ограниченном контексте protected). Приведенное выше объявление позволяет нашему классу Win_Lab автоматически стать оконным классом, скрывая подробности, связанные с прорисовкой и отображением окна. Класс Win_Lab использует интерфейс ActionListener. Выше было указано, что интерфейс – это класс, содержащий только объявления методов без их реализации. Интерфейс ActionListener используется для прослушивания событий от кнопок и меню. Для других элементов используются другие интерфейсы. Обратимся теперь к структуре класса Win_Lab. Представлено объявление единственной кнопки Button bex=new Button("Exit"); Тип кнопки Button. Кнопка имеет программное имя bex. Кнопка не только объявлена, но и создана с помощью конструктора класса Button. В вызове конструктора указывается в качестве параметра название кнопки. Конструктор класса Win_Lab объявлен и реализован следующим образом
public Win_Lab() { super("my window"); setLayout(null); setBackground(new Color(150,200,100)); setSize(250,250); add(bex); bex.setBounds(110,190,100,20); bex.addActionListener(this); this.show(); this.setLocationRelativeTo(null); }
Назначение конструктора – инициализировать форму, т.е. задать размеры, цвет фона, разместить элементы интерфейса и др. Цвет фона задает команда setBackground(new Color(150,200,100)). Размеры формы устанавливает команда setSize(250,250); Команда this.show(); делает форму видимой. Кнопка добавляется на форму командой: add(bex). С помощью команды bex.setBounds(110,190,100,20);
кнопка отображается на форме в требуемой позиции и с указанными размерами (в пискселах). Аргументы задают в данном случае координаты левого верхнего угла кнопки: (110,190), а также ее размеры (ширину и высоту) – 100,20. Прослушиватель (listener) подключается к кнопке командой:
bex.addActionListener(this);
Прослушиватель позволяет «реагировать» на нажатие кнопки. Если его не подключить, то нажатие на кнопку не вызовет никаких действий. Обработка событий от кнопки (и других элементов, которые «прослушивает» интерфейс ActionListener, реализуется с помощью метода public void actionPerformed(ActionEvent ae). Аргументом этого метода является объект класса ActionEvent. При обработке события от кнопки выполняется проверка источника события:
if(ae.getSource()==bex) System.exit(0);
Метод getSource() возвращает программное имя источника события. Если имя источника события совпадает с программным именем кнопки (в нашем примере – это bex), то выполняется завершение приложения (System.exit(0)). Следует заметить, что просто щелчком на иконке нельзя выполнить ее завершение.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (257)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |