48248 (597388), страница 3
Текст из файла (страница 3)
Таблица 1. Поля класса GridBagConstraints
| Поле | Значение |
| anchor | Направление размещения компонента в контейнере. Константы: CENTER, NORTH, EAST, NORTHEAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, и NORTHWEST; no умолчанию CENTER |
| fill | Растяжение компонента для заполнения ячейки. Константы: NONE, HORIZONTAL, VERTICAL, BOTH; ПО умолчанию NONE |
| gridheight | Количество ячеек в колонке, занимаемых компонентом. Целое типа int, по умолчанию 1. Константа REMAINDER означает, что компонент займет остаток колонки, RELATIVE — будет следующим по порядку в колонке |
| gridwidth | Количество ячеек в строке, занимаемых компонентом. Целое типа int, по умолчанию 1. Константа REMAINDER означает, что компонент займет остаток строки, RELATIVE — будет следующим в строке по порядку |
| gridx | Номер ячейки в строке. Самая левая ячейка имеет номер 0. По умолчанию константа RELATIVE, что означает: следующая по порядку |
| gridy | Номер ячейки в столбце. Самая верхняя ячейка имеет номер 0. По умолчанию константа RELATIVE, что означает: следующая по порядку |
| insets | Поля в контейнере. Объект класса insets; по умолчанию объект с нулями |
| ipadx, ipady | Горизонтальные и вертикальные поля вокруг компонентов; по умолчанию 0 |
| weightx, weighty | Пропорциональное растяжение компонентов при изменении размера контейнера; по умолчанию 0,0 |
Как правило, объект класса GridBagConstraints создается конструктором по умолчанию, затем значения нужных полей меняются простым присваиванием новых значений, например:
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.gridheight =2;
После создания объекта gbc класса GridBagConstraints менеджеру размещения указывается, что при помещении компонента comp в контейнер следует применять правила, занесенные в объект gbc. Для этого применяется метод
add(Component comp, GridBagConstraints gbc)
Итак, схема применения менеджера GridBagLayout такова:
GridBagLayout gbl = new GridBagLayout(); // Создаем менеджер
setLayout(gbl); // Устанавливаем его в контейнер
// Задаем правила размещения по умолчанию
GridBagConstraints с = new GridBagConstraints();
Button b2 = new Button(); // Создаем компонент
c.gridwidth =2; // Меняем правила размещения
add(bl, с); // Помещаем компонент b2 в контейнер по указанным правилам
//размещения с
Button b2 = new Button(); // Создаем следующий компонент
c.gridwidth = 1; // Меняем правила для его размещения
add(b2, с); // Помещаем в контейнер
и т.д.
Приложение 5. Обработка событий.
Java 2 использует хорошо структурированную, функционально полную и очень логичную модель обработки событий, впервые реализованную в JDK 1.1. Иерархия классов событий имеет вид:
Object
EventObject
AWTEvent
ActionEvent
AdjustmentEvent
ItemEvent
TextEvent
ComponentEvent
ContainerEvent
FocusEvent
WindowEvent
PaintEvent
InputEvent
KeyEvent
MouseEvent
Классы и интерфейсы для работы с делегированными событиями расположены в пакете java.awt.event (см. рисунок 5).
В классах событий существуют открытые методы:
| Класс | Метод | Возвращаемые данные |
| EventObject | Object getSource() | объект, вызвавший события |
| String toString() | строка, описывающая событие | |
| AWTEvent | int getID() | идентификатор типа события |
| String paramString() | строка параметров события | |
| ActionEvent | int getModifiers() | состояние клавиш-модификаторов |
| String getActionCommand() | название действия | |
| AdjustmеntEvent | int getValue() | текущее значение, полученное из прокрутки |
| int getAdjustmentType() | тип установки прокрутки, изменившей значения | |
| Adjustable getAdjustable() | ссылка на объект прокрутки, установивший значение | |
| ItemEvent | Object getItem() | пункт списка, измененный данным событием |
| Container getContainer() | объект, вызвавший данное событие | |
| FocusEvent | boolean isTemporary() | истину, если фокус ввода данного объекта возобновляется самостоятельно |
| PaintEvent | Graphics getGraphics() | графический контекст для данного события |
| WindowEvent | Window getWindow() | ссылка на окно, которое вызвало данное событие |
| InputEvent | boolean isShiftDown() | истина, если нажата клавиша Shift |
| boolean isControlDown() | истина, если нажата клавиша Control | |
| boolean isMetaDown() | истина, если нажата клавиша Meta | |
| boolean isAltDown() | истина, если нажата клавиша Alt | |
| int getWhen() | время в миллисекундах с того времени, как произошло данное событие | |
| int getModifiers() | состояние всех модификаторов клавиатуры | |
| boolean isConsumed() | истина, если событие обработано | |
| KeyEvent | int getKeyCode() | код клавиши, вызвавшей событие |
| char getKeyChar() | символ клавиши, вызвавшей событие | |
| boolean isActionKey() | истина, если клавиша, вызвавшая событие, является функциональной клавишей | |
| MouseEvent | int getX() | текущая абсцисса указателя мыши при генерации данного события |
| int getY() | текущая ордината указателя мыши при генерации данного события | |
| Point getPoint() | положение указателя мыши при генерации данного события | |
| getClickCount() | число нажатий на кнопку мыши при генерации данного события | |
| isPopupTrigger() | истина, если данное событие связано с переключателем всплывающего меню для текущей операционной платформы |
Классы, ответственные за обработку событий в JDK 1.1, реализуют интерфейсы “прослушивания” событий (listeners):
| Интерфейс | Переопределяемые методы | Описание |
| ActionListener | actionPerformed (ActionEvent e) | произведено некоторое действие |
| AdjustmentListener | adjustementValueChanged (AdjustmentEvent) | изменилось значение в линии прокрутки |
| ComponentListener | componentResized (ComponentEvent e) | компонент изменил размер |
| componentMoved (ComponentEvent e) | компонент изменил расположение | |
| componentShown (ComponentEvent e) | компонент отображен | |
| componentHidden (ComponentEvent e) | компонент спрятан | |
| ContainerListener | componentAdded (ContainerEvent e) | компонент добавлен в контейнер |
| componentRemoved (ContainerEvent e) | компонент убран из контейнера | |
| FocusListener | focusGained(FocusEvent e) | компонент получил фокус ввода |
| focusLost (FocusEvent e) | компонент потерял фокус ввода | |
| ItemListener | ItemStateChaged (ItemEvent e) | изменился выделенный пункт выбора |
| KeyListener | keyTyped(KeyEvent e) | напечатан символ |
| keyPressed(KeyEvent e) | нажата клавиша | |
| keyReleased(KeyEvent e) | нажатая клавиша отпущена | |
| MouseListener | mouseClicked(MouseEvent e) | нажата и отпущена кнопка мыши |
| mousePressed(MouseEvent e) | нажата кнопка мыши | |
| mouseReleased(MouseEvent e) | отпущена нажатая кнопка мыши | |
| mouseEntered(MouseEvent e) | указатель мыши вошел в область компонента | |
| mouseExited(MouseEvent e) | указатель мыши вышел из области компонента | |
| MouseMotionListener | mouseDragged(MouseEvent e) | перемещен указатель мыши при нажатой кнопке мыши |
| mouseMoved(MouseEvent e) | перемещен указатель мыши при не нажатой кнопке мыши | |
| TextListener | textValueChanged(TextEvent e) | текстовое значение изменилось |
| WindowListener | windowOpened(WindowEvent e) | окно открыто |
| windowClosing(WindowEvent e) | окно закрывается | |
| windowClosed(WindowEvent e) | окно закрыто | |
| windowIconified(WindowEvent e) | окно минимизировано | |
| windowDeiconified (WindowEvent e) | окно восстановило размеры после минимизации | |
| windowActivated (WindowEvent e) | окно активировано (является окном ввода информации) | |
| windowDeactivated (WindowEvent e) | окно перестало быть активным окном |
Некоторым интерфейсам событий соответствуют открытые абстрактные классы-адаптеры, содержащие пустые методы для обработки событий:
| Интерфейс | Класс |
| ComponentListener | ComponentAdapter |
| ContainerListener | ContainerAdapter |
| FocusListener | FocusAdapter |
| KeyListener | KeyAdapter |
| MouseListener | MouseAdapter |
| MouseMotionListener | MouseMotionAdapter |
| MouseInputListener | MouseInputAdapter |
| WindowListener | WindowAdapted |
К действиям относятся события, поступающие от компонентов:
| Компонент | Генерируемое событие |
| Button | нажатие на кнопку мыши |
| MenuItem | нажатие на кнопку мыши |
| List | нажатие на кнопку мыши |
| нажатие на клавишу возврата каретки | |
| TextField | нажатие на клавишу возврата каретки |
Управляющие компоненты регистрируют “прослушивание” событий при помощи методов вида:
















