Читаем Java 7 полностью

меняет тип модальности. Если тип модальности type не отрабатывается графической системой, то устанавливается тип modeless. Во многих графических системах новый тип модальности вступит в силу только после того, как окно будет закрыто и вновь открыто.

В прежних версиях Java SE использовались методы isModal(), проверяющий состояние модальности, и setModal(boolean modal), меняющий это состояние. Эти методы сейчас не применяются, но оставлены в JDK для обратной совместимости со старыми программами.

События

Кроме событий класса Componen — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении размеров окна, его перемещении или удалении с экрана, а также появлении на экране происходит событие WindowEvent.

В листинге 10.6 создается модальное окно доступа, в которое вводится имя и пароль. Пока не будет сделан правильный ввод, другие действия невозможны. На рис. 10.6 показан вид этого окна.

Листинг 10.6. Модальное окно доступа

import java.awt.*; import java.awt.event.*;

class LoginWin extends Dialog{

LoginWin(Frame f, String s){ super(f, s, true); setLayout(null);

setFont(new Font("Serif", Font.PLAIN, 14));

Label l1 = new Label("Ваше имя:", Label.RIGHT);

11. setBounds(20, 30, 70, 25); add(l1);

Label l2 = new Label("Пароль:", Label.RIGHT);

12. setBounds(20, 60, 70, 25); add(l2);

TextField tf1 = new TextField(30); tf1.setBounds(100, 30, 160, 25); add(tf1);

TextField tf2 = new TextField(30); tf2.setBounds(100, 60, 160, 25); add(tf2); tf2.setEchoChar('*');

Button b1 = new Button("Применить"); b1.setBounds(50, 100, 100, 30); add(b1);

Button b2 = new Button("Отменить"); b2.setBounds(160, 100, 100, 30); add(b2);

setBounds(50, 50, 300, 150);

}

}

class DialogTest extends Frame{

DialogTest(String s){ super(s); setLayout(null); setSize(200, 100); setVisible(true);

Dialog d = new LoginWin(this, " Окно входа"); d.setVisible(true);

}

public static void main(String[] args){

Frame f = new DialogTest(" Окно-владелец"); f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){ System.exit(0);

}

});

}

Рис. 10.6. Модальное окно доступа

Контейнер FileDialog

Контейнер FileDialog — это модальное окно с владельцем типа Frame, содержащее стандартное окно выбора файла для открытия (константа load) или сохранения (константа save). Окна операционной системы создаются и помещаются в объект класса FileDialog автоматически.

В классе шесть конструкторов:

□ FileDialog ( Frame owner) -создает окно с пустым заголовком для открытия файла;

□ FileDialog(Frame owner, String title) — создает окно открытия файла с заголовком

title;

□ FileDialog(Frame owner, String title, int mode) — создает окно открытия или сохранения документа; аргумент mode имеет два значения: окно открытия файла

FileDialog.LOAD и окно сохранения файла FileDialog.SAVE.

Остальные три конструктора аналогичны первым трем, только первый параметр у них типа Dialog, а не Frame.

Методы класса getDirectory( ) и getFile ( ) возвращают только выбранный каталог и имя файла в виде строки String. Загрузку или сохранение файла затем нужно производить методами классов ввода/вывода, как рассказано в главе 23. Там же приведены примеры использования класса FileDialog.

Можно установить начальный каталог для поиска файла и имя файла методами

setDirectory(String dir) и setFile(String fileName).

Вместо конкретного имени файла fileName можно написать его шаблон, например *.java (первые символы — звездочка и точка), тогда в окне будут видны только имена файлов, заканчивающиеся точкой и словом java.

Метод setFilenameFilter (FilenameFilter filter) устанавливает шаблон filter для имени выбираемого файла. В окне будут видны только имена файлов, подходящие под шаблон. Этот метод не реализован в Sun JDK на платформе MS Windows.

События

Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при изменении размеров окна, его перемещении или удалении с экрана, а также появлении на экране происходит событие WindowEvent.

Создание собственных компонентов

Создать собственный компонент, дополняющий свойства и методы уже существующих компонентов AWT, очень просто — надо лишь унаследовать свой класс от существующего класса Button, TextField или другого класса-компонента.

Если нужно скомбинировать несколько компонентов в один, новый, компонент, то достаточно расширить класс Panel, расположив компоненты на панели.

Если же требуется создать совершенно новый компонент, то AWT предлагает две возможности: создать "тяжелый" или "легкий" компонент. Для создания собственных "тяжелых" компонентов в библиотеке AWT есть класс Canvas — пустой компонент, для которого создается свой peer-объект графической системы.

Компонент Canvas

Компонент Canvas — это пустой компонент. Класс Canvas довольно прост — в нем чаще всего используется только конструктор по умолчанию Canvas () и пустая реализация метода paint(Graphics g).

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных