Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 1© Александр Фролов, Григорий ФроловТом 30, М.: Диалог-МИФИ, 1997, 288 стр. Приложение BorderВ приложении Border создается пять кнопок, которые размещаются в режиме BorderLayout (рис. 6.3). Рис. 6.3. Окно аплета Border Заметьте, что в процессе размещения северная и южная кнопка (верхняя и нижняя на нашем рисунке) заняли по ширине все окно аплета. Высота же этих кнопок была установлена достаточной для размещения одной строки текста. Восточная и западная кнопка (левая и правая) имеют ширину, достаточную для размещения текста, и высоту, равную высоте области, которая осталась от сервеной и южной кнопок. Для центральной кнопки было выделено все оставшееся пространство в центре окна аплета. Исходные тексты приложенияИсходный текст приложения Border приведен в листинге 6.3. Листинг 6.3. Файл Border\Border.java // ========================================================= // Режим компоновки BorderLayout // // (C) Фролов А.В, 1997 // // E-mail: frolov@glas.apc.org // WWW: http://www.glasnet.ru/~frolov // или // http://www.dials.ccas.ru/frolov // ========================================================= import java.applet.*; import java.awt.*; public class Border extends Applet { // Создаем ссылки на объекты типа Button Button btn1; Button btn2; Button btn3; Button btn4; Button btn5; // Строка для записи названия нажатой кнопки String sTextLabel; // ------------------------------------------------------- // getAppletInfo // Метод, возвращающей строку информации об аплете // ------------------------------------------------------- public String getAppletInfo() { return "Name: Grid\r\n" + "Author: Alexandr Frolov\r\n" + "E-mail: frolov@glas.apc.org" + "WWW: http://www.glasnet.ru/~frolov" + "Created with Microsoft Visual J++ Version 1.1"; } // ------------------------------------------------------- // init // Метод, получающий управление при инициализации аплета // ------------------------------------------------------- public void init() { // Устанавливаем желтый цвет фона setBackground(Color.yellow); // Создаем кнопки btn1 = new Button("Button North"); btn2 = new Button("Button East"); btn3 = new Button("Button West"); btn4 = new Button("Button South"); btn5 = new Button("Button Center"); // Устанавливаем режим GridLayout setLayout(new BorderLayout()); // Добавляем кнопки в контейнер add("North", btn1); add("East", btn2); add("West", btn3); add("South", btn4); add("Center", btn5); } // ------------------------------------------------------- // action // Метод вызывается, когда пользователь выполняет // действие над компонентами // ------------------------------------------------------- public boolean action(Event evt, Object obj) { // Ссылка на кнопку, от которой пришло сообщение Button btn; // Проверяем, что событие вызвано кнопкой, а не // другим компонентом if(evt.target instanceof Button) { // Получам ссылку на кнопку, вызвавшую событие btn = (Button)evt.target; // Получаем название кнопки sTextLabel = btn.getLabel(); // Записываем название кнопки // в строку состояния навигатора showStatus("Button (\"" + sTextLabel + "\") pressed"); // возвращаем признак того, что мы обработали событие return true; } // Если событие вызвано не кнопкой, // мы его не обрабатываем return false; } // ------------------------------------------------------- // paint // Метод paint, выполняющий рисование в окне аплета // ------------------------------------------------------- public void paint(Graphics g) { // Определяем текущие размеры окна аплета Dimension dimAppWndDimension = size(); // Выбираем в контекст отображения черный цвет g.setColor(Color.black); // Рисуем рамку вокруг окна аплета g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); } } Документ HTML, который был создан для нашего аплета, вы найдете в листинге 6.4. Листинг 6.4. Файл Border\Border.html <html> <head> <title>Border</title> </head> <body> <hr> <applet code=Border.class id=Border width=320 height=240 > </applet> <hr> <a href="Border.java">The source.</a> </body> </html> Описание исходного текстаВсе самое интересное в приложении Border происходит в методе init, поэтому мы ограничимся описанием только этого метода. Прежде всего метод init устанавливает желтый цвет фона: setBackground(Color.yellow); И хотя весь фон в нашем аплете закрыт кнопками, вы можете изменить это, выбрав конструктор класса BorderLayout, допускающий задание зазора между компонентами по вертикали и горизонтали. Далее метод init создает пять кнопок для размещения в окне аплета. Здесь тоже для вас нет ничего нового: btn1 = new Button("Button North"); btn2 = new Button("Button East"); btn3 = new Button("Button West"); btn4 = new Button("Button South"); btn5 = new Button("Button Center"); Далее мы устанавливаем режим размещения компонент в окне контейнера, вызывая для этого метод setLayout: setLayout(new BorderLayout()); В качестве параметра методу setLayout передается ссылка на только что созданный объект класса BorderLayout. Так как выбран конструктор класса BorderLayout без параметров, зазор между компонентами будет отсутствовать. Добавление компонент выполняется методом add с указанием направления расположения компоненты: add("North", btn1); add("East", btn2); add("West", btn3); add("South", btn4); add("Center", btn5); Заметим, что нельзя размещать несколько компонент в одном и том же направлении. |