Spec-Zone .ru
спецификации, руководства, описания, API
Домашняя страница > Создание GUI С JFC/Swing

Ответы: Пишущие Слушатели События

Используйте этот lesson⠀™ s таблицы, компонент разделы с практическими рекомендациями и слушатели события разделы с практическими рекомендациями, чтобы завершить эти вопросы и упражнения.

Вопросы

Вопрос 1: Какого слушателя Вы реализовали бы, чтобы быть уведомленными, когда определенный компонент появился на экране? Какой метод говорит Вам эту информацию?
Ответ 1: Вы зарегистрировали бы a ComponentListener на компоненте. componentShown метод. Этот метод вызывают, когда окно сначала выводится на экран или является deiconified.

Вопрос 2: Какого слушателя Вы реализовали бы, чтобы быть уведомленными, когда пользователь закончил редактировать текстовое поле нажатием, Входят? Какого слушателя Вы реализовали бы, чтобы быть уведомленными, поскольку каждый символ вводится в текстовое поле? Отметьте, что недопустимо реализовать ключевого слушателя общего назначения, но слушателя, определенного для текста.
Ответ 2: Чтобы быть уведомленными, когда пользователь нажимает, Входят, Вы зарегистрировались бы ActionListener на текстовом поле; actionPerformed метод вызывают, когда пользовательские типы Входят. Отметьте, что Ввести символ не является частью получающейся строки. Чтобы быть уведомленным как, каждый символ вводится, Вы зарегистрировали бы a DocumentListener на текстовом поле Document. insertUpdate метод тогда вызывают, поскольку каждый символ вводится. Отметьте, что это не корректный способ реализовать контроль ввода. Для того поведения следует проверить Входной раздел API Проверки в том, Как Использовать Подсистему Фокуса.

Вопрос 3: Какого слушателя Вы реализовали бы, чтобы быть уведомленными, когда spinner⠀™ s значение изменился? Как Вы получили бы spinner⠀™ s новое значение?
Ответ 3: Чтобы быть уведомленными, когда значение изменилось, Вы зарегистрировали бы a ChangeListener на прядильщике. Вы получили бы новое значение через источник события в stateChanged метод. Следующий фрагмент кода показывает, как это могло быть сделано:

public void stateChanged(ChangeEvent e) {
    JSpinner mySpinner = (JSpinner)(e.getSource());
    SpinnerNumberModel model = (SpinnerNumberModel)(mySpinner.getModel());
    Number currentValue = model.getNumber();
    ...
}

Вопрос 4: поведение значения по умолчанию для подсистемы фокуса должно использовать ключи обхода фокуса, такие как Вкладка Сдвига и Вкладка. Скажите, что Вы хотите предотвратить это поведение в одном из Ваших application⠀™ s компоненты. Как Вы выполнили бы это?
Ответ 4: Вы вызываете setFocusTraversalKeysEnabled(false) на том определенном компоненте. Отметьте, что следует тогда обработать обход фокуса вручную. См., Как Записать Ключевому Слушателю и Как Использовать Подсистему Фокуса для получения дополнительной информации.

Упражнения

Упражнение 1. Возьмите Beeper.java(в.java исходном файле) пример и добавьте текстовое поле. Реализуйте это так, чтобы, когда у пользователя есть данные ввода окончания, системные звуковые сигналы.
Ответ 1: См. Beeper1.java(в.java исходном файле)

Упражнение 2. Возьмите Beeper.java(в.java исходном файле) пример и добавьте выбираемый компонент, который позволяет пользователю вводить число от 1 до 10. Например, можно использовать поле комбинированного списка, ряд переключателей, или прядильщика. Реализуйте это так, чтобы, когда пользователь выбрал число, системные звуковые сигналы это много раз.
Ответ 2: См. Beeper2.java(в.java исходном файле)

«ПредыдущийTOC

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

Предыдущая страница: Вопросы и Упражнения: Пишущие Слушатели События