|
аписали ссылку на контекст отображения для
панели pDraw.
Получив контекст отображения, можно приступить к рисованию. Вот, например,
как можно нарисовать вокруг панели тонкую рамку:
Dimension dimAppWndDimension = pDraw.size();
gpDraw.drawRect(0, 0, dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
В этом фрагменте кода мы вначале определили размеры панели, вызвав для нее
метод size, а затем при помощи метода drawRect, вызванного для контекста
отображения gpDraw, нарисовали рамку.
Для установки шрифта и рисования текста в окне панели вы также должны
указывать ссылку на контекст отображения вашей панели:
gpDraw.setFont(new Font(“Courier”, Font.PLAIN, 12));
gpDraw.drawString("Текст внутри окна панели", 10, 50);
Другой способ основан на создании собственного класса на базе класса Panel и
переопределения в этом классе метода paint. Мы рассмотрим его позже в разделе
“Переопределение класса Panel”.
Приложение PanelDemo
В приложении PanelDemo мы создаем две панели, расположенные горизонтально.
Первая из них используется как блокнот, на каждой странице которого находится
кнопка, вторая содержит две управляющие кнопки, позволяющие перебирать страницы
блокнота по очереди (рис. 7.2).
Рис. 7.2. Окно аплета PanelDemo
Объемное изображение схемы расположения панелей и кнопок относительно окна
аплета показано на рис. 7.3.
Рис. 7.3. Объемное изображение схемы расположения панелей и кнопок
В верхней панели друг над другом располагаются пять кнопок (как колода карт),
причем видна только одна из них. В нижней панели только две кнопки, с помощью
которых можно выдвигать на передний план по очереди все кнопки из верхней
панели.
Нажимая на кнопки Next и Prev, попробуйте понажимать на кнопки в верхней
панели. В строке состояния навигатора при этом будет отображаться название
нажатой кнопки (на рис. 6.5 это не показано).
Исходные тексты приложения
Файл исходного текста приложения PanelDemo представлен в листинге 7.1.
Листинг 7.1. Файл PanelDemo\PanelDemo.java
// =========================================================
// Работа с панелями класса Panel
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;
public class PanelDemo extends Applet
{
// Панель для размещения блокнота
Panel pCardPanel;
// Панель для размещения кнопок управления блокнотом
Panel pButtonPanel;
// Создаем ссылки на объекты типа Button
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btnNext;
Button btnPrev;
// Строка для записи названия нажатой кнопки
String sTextLabel;
// -------------------------------------------------------
// getAppletInfo
// Метод, возвращающей строку информации об аплете
// -------------------------------------------------------
public String getAppletInfo()
{
return "Name: Grid\r\n" +
"Author: Alexandr Frolov\r\n" +
"E-mail: [email protected]" +
"WWW: http://www.glasnet.ru/~frolov" +
"Created with Microsoft Visual J++ Version 1.1";
}
// -------------------------------------------------------
// init
// Метод, получающий управление при инициализации аплета
// -------------------------------------------------------
pub
|
|