如何编写变更监听器
原文: https://docs.oracle.com/javase/tutorial/uiswing/events/changelistener.html
更改监听器类似于属性更改监听器。更改监听器在对象上注册 - 通常是组件,但它可以是另一个对象,如模型 - 并且在对象更改时通知监听器。与属性更改监听器的最大区别在于,更改监听器未通知已更改的内容,而只是源对象已更改。因此,当只需要知道对象何时以任何方式发生变化时,更改监听器最有用。
几个 Swing 组件(包括 JTabbedPane ,JViewPort)依赖于基本功能的更改事件 - 滑块,颜色选择器和微调器。要了解滑块中的值何时更改,您需要注册更改监听器。同样,您需要在颜色选择器上注册更改监听器,以便在用户选择新颜色时通知您。您在微调器上注册更改监听器,以便在微调器的值更改时得到通知。
以下是滑块的更改事件处理代码示例:
//...where initialization occurs:
framesPerSecond.addChangeListener(new SliderListener());
...
class SliderListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
int fps = (int)source.getValue();
...
}
}
}
您可以在使用 Swing 组件的示例索引中找到SliderDemo
的源文件。
因为ChangeListener
只有一个方法,所以它没有相应的适配器类。
方法 | 目的 |
---|---|
stateChanged(ChangeEvent) | 当被监听组件改变状态时调用。 |
方法 | 目的 |
---|---|
对象 getSource() |
(java.util.EventObject
中的*)_ | 返回触发事件的对象。 |
使用 Change Listeners 的示例
下表列出了使用更改监听器的示例。
例 | 在哪里描述 | 笔记 |
---|---|---|
SliderDemo 和 |
SliderDemo2
| 如何使用滑块 | 在控制动画速度的滑块上注册更改监听器。更改监听器忽略更改事件,直到用户释放滑块。 |
| ColorChooserDemo
和
ColorChooserDemo2
| 如何使用颜色选择器 | 在颜色选择器的选择模型上使用更改监听器,以了解用户何时更改当前颜色。 |
| SpinnerDemo3
| 在中检测微调值变化如何使用微调器。 | 在日期字段微调器上使用更改监听器,以在微调器的日期更改时更改文本的颜色。 |
| SpinnerDemo4
| 在中检测微调值变化如何使用微调器。 | 当微调器的值发生变化时,使用微调器上的更改监听器循环显示灰度。 |
| ConverterRangeModel
及其亚类,
FollowerRangeModel
| 如何使用型号 | 为 Converter
演示中使用的滑块实现自定义模型。两种模型都在必要时明确触发更改事件。 |