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

Библиотека примеров приложений Java

Оглавление
Режим FlowLayout
Режим GridLayout
Режим BorderLayout
Режим CardLayout
GridBagLayout -  пример 1
GridBagLayout - заполнение формы
Инструментальная линейка
Панели
Точное размещение компонент
Прилипчивая кнопка

Назад Вперед

5.2. Режим GridLayout

Пример демонстрирует использование режима размещения GridLayout системы Layout Manager.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Демонстрация
(ваш браузер должен уметь работать с аплетами Java JDK 1.1)

Немного теории

Когда установлен режим размещения GridLayout, все компоненты располагаются в ячейках таблицы, имеющей заданное количество строк и столбцов. Размеры компонент изменяются таким образом, чтобы они полностью занимали свои ячейки.

Установка режима GridLayout выполняется при помощи метода setLayout, как это показано ниже:

setLayout(new GridLayout());

Далее компоненты добавляются в окно контейнера методом add, например:

TextField tf;
Button btnGetName;
  . . .
add(tf);
add(btnGetName);

Описание примера

В примере аплета GetName2, так же как и в примере аплета GetName, мы выполняем размещение двух текстовых полей редактирования, одной кнопки и одного поля класса Label (рис. 1).

pic1.gif (3056 bytes)

Рис. 1. Окно аплета GetName2

Если ввести какую-либо текстовую строку в верхнем поле редактирования, а затем нажать кнопку, эта строка будет скопирована в нижнее поле редактирования.

Все компоненты расположены в ячейках таблицы, состоящей из одного столбца и четырех строк. Заметьте, что компоненты растягиваются во всю ширину окна аплета.

При изменении размеров окна аплета взаимное расположение расположенных в нем компонент остается прежним (рис. 2).

pic2.gif (2990 bytes)

Рис. 2. Взаимное расположение компонент остается прежним при любых измненениях размеров окна аплета GetName2

Рассмотрим исходный текст аплета GetName2.

Главный класс аплета

Главный класс аплета GetName2 создан на базе класса Applet и реализует интерфейс ActionListener:

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class GetName2 extends Applet
  implements ActionListener
{
  . . .
}

Данный интерфейс применяется для обработки событий от кнопки.

В главном классе аплета мы также определили поля для хранения ссылок на текстовые поля редактирования, кнопку и поле класса Label:

TextField tf;
TextField tf2;
Button btnGetName;
Label lb;

Метод init

При инициализации аплета метод init создает все необходимые компоненты:

tf = new TextField(30);
btnGetName = new Button("Enter name");
lb = new Label("Your name is: ");
    
tf2 = new TextField(30);
tf2.setEditable(false);

Текстовое поле tf2 предназначено только для отображения строк, но не для редактирования, поэтому мы запретили редактирование методом setEditable.

После создания компонент мы устанавливаем режим размещения GridLayout:

setLayout(new GridLayout(0, 1));

Здесь мы указали, что таблица может содержать любое количество строк (через первый параметр конструктору класса GridLayout передается нулевое значение), но только один столбец. Вы можете самостоятельно поэкспериментировать с параметрами этого конструктора, располагая, например, компоненты в таблице из двух строк и двух столбцов:

setLayout(new GridLayout(2, 2));

После установки режима системы LayoutManager все необходимые компоненты добавляются в окно аплета методом add:

add(tf);
add(btnGetName);
add(lb);
add(tf2);

Перед тем как вернуть управление, метод init регистрирует обработчик событий от кнопки:

btnGetName.addActionListener(this);

Метод actionPerformed

Этот метод получает управление, когда пользователь нажимает кнопку Enter name. Он выполняет копирование текста из поля tf в поле tf2:

public void actionPerformed(ActionEvent e)
{
  if(e.getSource().equals(btnGetName))
  {
    tf2.setText(tf.getText());
  }
} 

Назад Вперед

[Назад]