gpt4 book ai didi

java - EventListenerList 中的这段代码在 Java Swing 中意味着什么?

转载 作者:行者123 更新时间:2023-12-02 06:36:28 24 4
gpt4 key购买 nike

我遇到了这段代码。我想了解 fireStateChanged 方法的作用以及它的作用。

public abstract class AbstractModel {

private EventListenerList listenerList;

protected EventListenerList getListenerList() {
if (listenerList == null) {
listenerList = new EventListenerList();
}
return listenerList;
}

protected void fireStateChanged() {
ChangeListener[] listeners = getListenerList().getListeners(ChangeListener.class);
if (listeners.length > 0) {
ChangeEvent evt = new ChangeEvent(this);
for (ChangeListener listener : listeners) {
listener.stateChanged(evt);
}
}
}

}

这段代码与上面的 fireStateChanged 方法有何不同?

public void fireActionEvent(ActionEvent evt) {
ActionListener[] listenerList = listeners.getListeners(ActionListener.class);

for(int i = listenerList.length-1; i >= 0; --i)
listenerList[i].actionPerformed(evt);
}

我是使用 EventListenerList 的初学者。我也阅读了文档。但我不清楚发生了什么事。 fireAction 类方法通常出现在许多代码中。所以我想清楚地理解这个概念。非常感谢

最佳答案

我只看到一个简单的区别。下面的代码仅从监听器列表中提取 ChangeListeners 和 ChangeListeners,然后触发它们:

protected void fireStateChanged() {
ChangeListener[] listeners = getListenerList().getListeners(ChangeListener.class);
if (listeners.length > 0) {
ChangeEvent evt = new ChangeEvent(this);
for (ChangeListener listener : listeners) {
listener.stateChanged(evt);
}
}
}

虽然这个仅从同一监听器列表中提取 ActionListener,然后触发它们:

public void fireActionEvent(ActionEvent evt) {
ActionListener[] listenerList = listeners.getListeners(ActionListener.class);

for(int i = listenerList.length-1; i >= 0; --i)
listenerList[i].actionPerformed(evt);
}

两种不同类型的监听器在激活时触发的方法中需要不同的参数,因此代码的第一位要求创建此 Event 对象。在第二个中,他们将 ActionEvent 传递到所有 ActionListener、actionPerformed 方法中。

关于java - EventListenerList 中的这段代码在 Java Swing 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602544/

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