# 问题和练习：写作事件听众

> 原文： [https://docs.oracle.com/javase/tutorial/uiswing/QandE/questions-ch5.html](https://docs.oracle.com/javase/tutorial/uiswing/QandE/questions-ch5.html)

使用本课程表，[组件操作方法](../components/index.html)和[事件监听器操作方法](../events/handling.html)来完成这些问题和练习。

## 问题

1.当某个特定组件出现在屏幕上时，您会实现什么样的监听器来收到通知？什么方法告诉你这个信息？

2.当用户按 Enter 键完成编辑文本字段时，您会实现什么样的监听器来收到通知？当每个字符输入文本字段时，您会实现什么样的监听器来收到通知？请注意，您不应该实现通用键侦听器，而应该是特定于文本的侦听器。

3.当微调器的值发生变化时，您将实现什么样的监听器来通知？你怎么会得到微调器的新价值？

4.焦点子系统的默认行为是使用焦点遍历键，例如 Tab 和 Shift Tab。假设您希望防止在您的某个应用程序组件中发生这种情况。你会怎么做到这一点？

## 演习

1.以 [`Beeper.java`](../examples/events/BeeperProject/src/events/Beeper.java)[![(in a .java source file)](img/2599ef5640d6dce179697fb8d79599b4.jpg)](../examples/events/BeeperProject/src/events/Beeper.java) 为例，添加文本字段。实现它，以便当用户完成输入数据时，系统会发出蜂鸣声。

2.取 [`Beeper.java`](../examples/events/BeeperProject/src/events/Beeper.java)[![(in a .java source file)](img/2599ef5640d6dce179697fb8d79599b4.jpg)](../examples/events/BeeperProject/src/events/Beeper.java) 示例并添加一个可选组件，允许用户输入 1 到 10 之间的数字。例如，您可以使用组合框，一组单选按钮，或一个微调器。实现它，以便当用户选择号码时，系统会发出多次哔声。

[检查你的答案。](answers-ch5.html)