Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
окне верхней панели.
   События, связанные с выбором нового цвета фона и изображения обрабатываются 
следующим образом:
if(evt.target.equals(chBackgroundColor))
{
  if(ch.getSelectedIndex() == 0)
    pDraw.setBackground(Color.yellow);
  else if(ch.getSelectedIndex() == 1)
    pDraw.setBackground(Color.green);
  else if(ch.getSelectedIndex() == 2)
    pDraw.setBackground(Color.white);
}
else if(evt.target.equals(chForegroundColor))
{
  if(ch.getSelectedIndex() == 0)
    pDraw.setForeground(Color.black);
  else if(ch.getSelectedIndex() == 1)
    pDraw.setForeground(Color.red);
  else if(ch.getSelectedIndex() == 2)
    pDraw.setForeground(Color.blue);
}
   Здесь методы setBackground и setForeground устанавливают цвет фона и 
изображения для панели pDraw.
   Если событие вызвано списком шрифтов, то мы получаем номер элемента списка и 
записываем название выбранного шрифта в текстовую строку sFontName:
else if(evt.target.equals(chFont)) 
{
  if(ch.getSelectedIndex() == 0)
    sFontName = "Helvetica";
  else if(ch.getSelectedIndex() == 1)
    sFontName = "Courier";
  else if(ch.getSelectedIndex() == 2)
    sFontName = "TimesRoman";
}
   После обработки события, вызванного списками, мы перерисовываем окно панели 
рисования pDraw и окно аплета:
pDraw.repaint();
repaint();
   Метод paint
   Метод paint рисует в окне панели pDraw, а не в главном окне аплета. Для 
этого метод paint получает контекст отображения этой панели, вызывая для этого 
метод getGraphics:
Graphics gpDraw;
gpDraw = pDraw.getGraphics();
   Далее метод paint определяет размеры панели pDraw и рисует рамку вокруг окна 
этой панели:
Dimension dimAppWndDimension = pDraw.size();
gpDraw.drawRect(0, 0, dimAppWndDimension.width  - 1, 
  dimAppWndDimension.height - 1);
   После того как рамка будет нарисована, метод paint устанавливает в панели 
pDraw шрифт, название которого хранится в староке sFontName. Для этого 
используется контекст отображения gpDraw, полученный нами ранее для панели 
pDraw:
gpDraw.setFont(new Font(sFontName, Font.PLAIN, 12));
   Текстовая строка отображается с использованием текущего цвета изображения и 
текущего шрифта, установленного в контексте отображения gpDraw, при помощи 
метода drawString:
gpDraw.drawString("Смотри на шрифт, цвет фона и текста!", 
  10, 50);
   Затем метод paint обводит панель блокнота рамкой. Вначале он получает 
контекст отображения для панели блокнота, как это показано ниже:
gpDraw = pCardPanel.getGraphics();
   После получения контекста отображения метод paint определяет размеры панели 
блокнота и рисует рамку вокруг его окна:
dimAppWndDimension = pCardPanel.size();
gpDraw.drawRect(0, 0, dimAppWndDimension.width  - 1, 
  dimAppWndDimension.height - 1);
   Создание нового класса на базе класса Panel
   Если ваш аплет создает много панелей, техника рисования в окнах этих панелей,
 использованная в только что рассмотренном приложении Notebook, может привести 
к усложнению исходного текста приложения. Так как рисование в окнах панелей 
выполняется в методе paint класса аплета, вам придется получать контекст 
отображения для каждой панели.
   Намного проще создать несколько дочерних классов от класса Panel, 
переопределив в каждом из них метод paint. В этом случае для каждой панели вы 
можете создать свой метода paint, которому будет автоматически передаваться 
контекст отображения, связанный с окном соответствующей панели.
   Эта техника использована в приложении Panel2, которое мы рассмотрим в 
следующем разделе.
   Приложение Panel2
   В окне аплета Panel2 мы создали две панели, одна из которых занимает верхнюю 
половину окна, а другая - нижнюю (рис. 7.7).

Рис. 7.7. Окно аплета Panel2 с двумя панелями
   Для каждой панели мы создали два отдельных класса на базе класса Panel. В 
созданных нами классах переопределен метод paint, который рисует одну текстовую 
строку в окне своей панели. В верхней панели рисуется строка “Первая панель”, в 
нижней - “Вторая панел
 
<<-[Весь Текст]
Страница: из 275
 <<-