|
панели на фоне окна аплета, мы устанавливаем для них
разные цвета фона и изображения. Для первой панели устанавливается желтый цвет
фона и черный цвет изображения:
pPanel1.setBackground(Color.yellow);
pPanel1.setForeground(Color.black);
Для второй панели мы устанавливаем белый цвет фона и красный цвет
изображения:
pPanel2.setBackground(Color.white);
pPanel2.setForeground(Color.red);
В результате цвета рамки окна и текста первой и второй панели будут разными.
На последнем этапе инициализации мы инициируем вызов метода paint класса
Panel2, вызывая для этого метод repaint:
repaint();
Это нужно для того, чтобы сразу после отображения окна аплета выполнить
рисование текстовых строк внутри окон панелей.
Метод paint класса Panel2
Метод paint класса Panel2 рисует две строки в окнах панелей, расположенных в
окне аплета. Для этого он получает контекст отображения каждой панели и
вызывает для этого контекста метод drawGraphics:
Graphics gPanel1;
Graphics gPanel2;
gPanel1 = pPanel1.getGraphics();
gPanel1.drawString("Нарисовано в первой панели", 10, 80);
gPanel2 = pPanel2.getGraphics();
gPanel2.drawString("Нарисовано во второй панели", 10, 80);
Хотя при рисовании строк мы указали одинаковые координаты начала строки (10,
80), наложения строк не произойдет. Это потому, что эти строки рисуются в
разных графических контекстах, которые относятся к окнам разных панелей.
Цвет рисуемого текста и фона, на котором он будет нарисован, также получится
разный, так как для наших панелей установлен разный цвет изображения и фона.
Класс FirstPanel
Класс FirstPanel создан на базе класса Panel:
class FirstPanel extends Panel
{
public void paint(Graphics g)
{
. . .
super.paint(g);
}
}
В нашем приложении мы создаем верхнюю панель как объект этого класса.
Единственный метод, переопределенный в классе FirstPanel - это метод paint.
Метод paint класса FirstPanel
Задачей метода paint класса FirstPanel является рисование рамки вокруг
первой панели и текстовой строки в окне этой панели. В качестве параметра метод
paint класса FirstPanel получает ссылку на контекст отображения для окна первой
панели. Мы можем использовать этот контекст для того чтобы нарисовать
что-нибудь внутри первой панели.
Процедура рисования не имеет никаких особенностей:
Dimension dimAppWndDimension = size();
g.drawRect(0, 0, dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
g.setFont(new Font("TimesRoman", Font.PLAIN, 12));
g.drawString("Первая панель", 10, 50);
Заметим, однако, что после завершения рисования мы вызываем метод paint из
базового класса, позволяя этому классу выполнить свою обработку:
super.paint(g);
Класс SecondPanel
Класс SecondPanel создан также на базе класса Panel:
class SecondPanel extends Panel
{
public void paint(Graphics g)
{
. . .
super.paint(g);
}
}
С использованием этого класса создается нижняя панель. В классе SecondPanel,
как и в классе FirstPanel, переопределен метод paint.
Метод paint класса SecondPanel
Метода paint класса SecondPanel выполняет те же самые операции, что и метод
paint класса FirstPanel, однако ему передается контекст отображения второй
панели. Поэтому он нарисует рамку и текстовую строку во второй панели, а не в
первой или где-нибудь еще.
8 ОКНА И ДИАЛОГОВЫЕ ПАНЕЛИ
До сих пор мы рисовали только в окне аплета или в окнах панелей,
расположенных внутри окна аплета. Однако есть и другая возможность - приложения
Java, полноценные и аплеты, могут создавать обычные перекрывающиеся окна, такие,
например,
|
|