Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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);

Заметим, что нельзя размещать несколько компонент в одном и том же направлении.

[Назад] [Содеожание] [Дальше]