Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Пишущие Слушатели События
Раздел: Реализующие Слушатели для Обычно Обрабатываемых Событий
Как Записать Компонентному Слушателю
Домашняя страница > Создание GUI С JFC/Swing > Пишущие Слушатели События

Как Записать Компонентному Слушателю

Компонентный слушатель является интерфейсом слушателя для того, чтобы получить компонентные события. Компонент является объектом, имеющим графическое изображение, которое может быть выведено на экран на экране, и это может взаимодействовать с пользователем. Некоторыми из примеров компонентов являются кнопки, флажки, и полосы прокрутки типичного графического интерфейса пользователя.

class, который интересуется обработкой компонентного события или реализует этот интерфейс и все методы, которые это содержит, или расширяет абстрактный ComponentAdapter class, переопределяющий только методы интереса. Объект слушателя, создаваемый из того, что class тогда регистрируется в компоненте, используя addComponentListener метод компонента. Когда размер компонента, расположение, или изменения видимости, соответствующий метод в объекте слушателя вызывается, и ComponentEvent передают к этому.

Одно или более компонентных событий запускаются a Component объект сразу после компонента скрывается, делается видимый, перемещался, или изменял размеры.

Скрытые от компонента и показанные компонентом события имеют место только как результат звонков a Component 's setVisible метод. Например, окно могло бы быть миниатюризировано в значок (представленный в виде значка) без скрытого от компонента запускаемого события.

Чтобы записать простую Компонентную программу слушателя, следуйте за шагами, упомянутыми ниже:

Следующий пример демонстрирует компонентные события. Окно содержит панель, у которой есть метка и флажок. Флажок управляет, видима ли метка. Текстовая область выводит на экран сообщение каждый раз окно, панель, метка, или флажок запускает компонентное событие.

Окно, демонстрирующее компонентные события

Попробуйте это: 
  1. Нажмите кнопку Launch, чтобы работать, ComponentEventDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.
    Запускает пример ComponentEventDemo
  2. Когда окно появляется, один, или более показанные компонентом события были запущены.
  3. Щелкните по флажку, чтобы скрыть метку.
    Метка запускает скрытое от компонента событие. Панель запускает перемещенные в компонент и измененные компонентом события. Флажок запускает перемещенное в компонент событие.
  4. Щелкните по флажку снова, чтобы показать метку.
    Метка запускает показанное компонентом событие. Панель запускает перемещенные в компонент и измененные компонентом события. Флажок запускает перемещенное в компонент событие.
  5. Представьте в виде значка и затем deiconify окно.
    Вы не становитесь скрытыми от компонента или - показанный события. Если Вы хотите быть уведомленными относительно iconification событий, следует использовать слушателя окна или слушателя статуса окна.
  6. Измените размеры окна.
    Вы будете видеть измененный компонентом (и возможно перемещенный в компонент) события от всех четырех компонентов — метка, флажок, панель, и фрейм. Если фрейм и менеджер по расположению панели не делали каждый компонент настолько широким насколько возможно, панель, метка, и флажок не будет изменен.

Можно найти код демонстрационного примера в ComponentEventDemo.java. Вот только код, связанный с обработкой компонентных событий:

public class ComponentEventDemo ... implements ComponentListener {
    static JFrame frame;
    JLabel label;
    ...
    public ComponentEventDemo() {
        ...
        JPanel panel = new JPanel(new BorderLayout());
        label = new JLabel("This is a label", JLabel.CENTER);
        label.addComponentListener(this);
        panel.add(label, BorderLayout.CENTER);

        JCheckBox checkbox = new JCheckBox("Label visible", true);
        checkbox.addComponentListener(this);
        panel.add(checkbox, BorderLayout.PAGE_END);
        panel.addComponentListener(this);
        ...
        frame.addComponentListener(this);
    }
    ...
     public void componentHidden(ComponentEvent e) {
        displayMessage(e.getComponent().getClass().getName() + " --- Hidden");
    }

    public void componentMoved(ComponentEvent e) {
        displayMessage(e.getComponent().getClass().getName() + " --- Moved");
    }

    public void componentResized(ComponentEvent e) {
        displayMessage(e.getComponent().getClass().getName() + " --- Resized ");            
    }

    public void componentShown(ComponentEvent e) {
        displayMessage(e.getComponent().getClass().getName() + " --- Shown");

    }

    public static void main(String[] args) {
        ...
        //Create and set up the window.
        frame = new JFrame("ComponentEventDemo");
        ...
        JComponent newContentPane = new ComponentEventDemo();
        frame.setContentPane(newContentPane);
        ...
    }
}

Компонентный API Слушателя

Интерфейс ComponentListener

Все эти методы находятся также в адаптере class, ComponentAdapter.

Метод Цель
componentHidden (ComponentEvent) Вызванный после слушаемого компонент скрывается как результат setVisible вызываемый метод.
componentMoved (ComponentEvent) Вызванный после слушаемого компонентные перемещения, относительно его контейнера. Например, если окно перемещается, окно запускает перемещенное в компонент событие, но компоненты, которые это содержит, не делают.
componentResized (ComponentEvent) Вызванный после слушаемого размер компонента (прямоугольные границы) изменения.
componentShown (ComponentEvent) Вызванный после слушаемого компонент становится видимым как результат setVisible вызываемый метод.

Класс ComponentEvent

Метод Цель
Компонент getComponent () Возвращает компонент, который запустил событие. Можно использовать это вместо getSource метод.

Примеры тот Компонент Использования Слушатели

Следующая таблица приводит примеры тот компонент использования слушатели.
Пример Где Описано Примечания
ComponentEventDemo Этот раздел Отчеты все компонентные события, которые происходят на нескольких компонентах, чтобы демонстрировать обстоятельства, при которых запускаются компонентные события.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Записать Слушателю Изменения
Следующая страница: Как Записать Контейнерному Слушателю