Spec-Zone .ru
спецификации, руководства, описания, API
|
Используйте этот 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
пример и добавьте текстовое поле. Реализуйте это так, чтобы, когда у пользователя есть данные ввода окончания, системные звуковые сигналы.
Ответ 1: См. Beeper1.java
Упражнение 2. Возьмите Beeper.java
пример и добавьте выбираемый компонент, который позволяет пользователю вводить число от 1 до 10. Например, можно использовать поле комбинированного списка, ряд переключателей, или прядильщика. Реализуйте это так, чтобы, когда пользователь выбрал число, системные звуковые сигналы это много раз.
Ответ 2: См. Beeper2.java