p align="left">Как правило, объект класса 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 | нажатие на клавишу возврата каретки | | |
Управляющие компоненты регистрируют “прослушивание” событий при помощи методов вида: void addТипКомпонентаListener(объектРеализующийПрослушивание) и освобождаются от “прослушивания” событий при помощи соответствующих методов вида: void removeТипКомпонентаListener(объектРеализующийПрослушивание) |
Класс | Метод для добавления “слушателя” события | | Componenet | addComponentListener(ComponenetListener l) addFocusListener(FocusListener l) addKeyListener(KeyListener) addMouseListener(MouseListener l) addMouseMotionListener(MouseMotionListener l) | | Container | addContainerListener(ContainerListener l) | | Button | addActionListener(ActionListener l) | | Checkbox | addItemListener(ItemListener l) | | CheckboxMenuItem | addItemListener(ItemListener l) | | Choice | addItemListener(ItemListener l) | | List | addItemListener(ItemListener l) addActionListener(ActionListener l) | | MenuItem | addActionListener(ActionListener l) | | Scrollbar | addAdjustnmentListener(AdjustmentListener l) | | TextComponent | addTextListener(TextListener l) | | TextArea | addActionListener(ActionListener l) | | Window | addWindowListener(WindowListener l) | | |
Приведем пример приложения, обрабатывающего событие ActionEvent Пример работы с событием действия (ActionEvent) import java.awt.*; import java.awt.event.*; public class FrameActionEvent extends Frame implements ActionListener{ Label l = new Label();// Создадим метку для вывода сообщения Button b = new Button("OK");// Создадим кнопку, генерирующую сообщение public void FrameActionEvent() { setLayout(null);// Установим абсолютное размещение компонентов setBackground(Color.lightGray);// Установим светло-серый фон // Установим границы управляющих компонентов l.setBounds(20, 10, 40, 20); // метки b.setBounds(20, 40, 40, 20); // кнопки // Зарегистрируем для кнопки “прослушивание” событий b.addActionListener(this); // Добавим в окно add(l); // метку add(b); // кнопку } // Реализуем обработку события действия public void actionPerformed(ActionEvent e) { l.setText("I'm OK!"); } }
Страницы: 1, 2, 3
|