【发布时间】:2011-01-10 17:10:03
【问题描述】:
在 Swing 应用程序中,我有许多子面板,每个子面板都监听一个 JSlider。周围的父面板也监听所有的子面板。为了在下面的示例中获得一致的结果,我必须先添加父级,然后然后添加本地侦听器。鉴于EventListenerList 中规定的顺序并在此article 中进行了解释,这是有道理的。我可以依赖该订单还是应该安排发送不同的事件?
class SubPanel extends JPanel implements ChangeListener {
private final JSlider slider = new JSlider();
private final JLabel label = new JLabel();
private final String name;
private float value;
public SubPanel(String name, float value, ChangeListener parent) {
this.name = name;
this.value = value;
...
slider.addChangeListener(parent);
slider.addChangeListener(this);
}
...
}
附录:EventListenerList 中的讨论似乎是实施建议而不是保证。 pstanton 建议的链接方法更可靠地执行正确的顺序。例如,SubPanel 的ChangeListener 可以简单地将事件转发给父级。
@Override
public void stateChanged(ChangeEvent e) {
...
parent.stateChanged(e);
}
【问题讨论】:
-
有趣的问题和讨论! 1+
-
Converter应用程序在ConverterRangeModel中包含一个示例。 -
我刚刚收到你的帖子,而
googling,想详细解释一下。如果我描述的任何内容有误,请指出我的帖子!
标签: java swing event-listener