gpt4 book ai didi

java - EventListenerList 触发顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:27 26 4
gpt4 key购买 nike

在 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 建议的链接方法更可靠地执行正确的顺序。例如,SubPanelChangeListener 可以简单地将事件转发给父面板。

    @Override
public void stateChanged(ChangeEvent e) {
...
parent.stateChanged(e);
}

最佳答案

由于 JSlider 和 JComponent 等的文档没有提到监听器通知的顺序,我会犹豫是否依赖它,至少在没有对 JRE 的每个后续版本进行全面测试的情况下。

如果确实需要依赖顺序,可以考虑设置一个监听器链,即监听器一会通知监听器二等。

关于java - EventListenerList 触发顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com