色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 事件和委托

吉茹定2年前8瀏覽0評論

Java是一種面向對象的編程語言,它的事件和委托機制為Java程序提供了更加靈活的事件處理方式。

//Java事件的實現方式
public interface ActionListener {
public void actionPerformed(ActionEvent e);
}
public class JButton extends AbstractButton implements Accessible {
public void addActionListener(ActionListener listener) {
listenerList.add(ActionListener.class, listener);
}
protected void fireActionPerformed(ActionEvent event) {
Object[] listeners = listenerList.getListenerList();
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == ActionListener.class) {
((ActionListener) listeners[i + 1]).actionPerformed(event);
}
}
}
}
public class Test {
public static void main(String[] args) {
JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked");
}
});
}
}

在Java事件機制中,事件對象(例如ActionEvent)通過事件源(例如JButton)傳遞給監聽器(例如ActionListener)。當事件源上發生某個特定的動作(例如單擊按鈕)時,它會創建一個事件對象并將其傳遞給所有注冊的監聽器。

Java委托機制是Java語言實現事件機制所采用的一種設計模式。通過委托機制,事件源和事件監聽器之間的耦合度得到了很大的降低,這使得Java程序的可維護性和可擴展性得到了很大的提高。

//Java委托的實現方式
public class EventSource {
public void addEventListener(EventListener listener) {
listenerList.add(EventListener.class, listener);
}
public void removeEventListener(EventListener listener) {
listenerList.remove(EventListener.class, listener);
}
protected void fireEvent(EventObject event) {
Object[] listeners = listenerList.getListenerList();
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == EventListener.class) {
((EventListener) listeners[i + 1]).handleEvent(event);
}
}
}
}
public interface EventListener extends java.util.EventListener {
public void handleEvent(EventObject event);
}
public class Test {
public static void main(String[] args) {
EventSource eventSource = new EventSource();
eventSource.addEventListener(new EventListener() {
public void handleEvent(EventObject event) {
System.out.println("Something happened");
}
});
//...
eventSource.fireEvent(new EventObject(this));
}
}

在Java委托機制中,事件源(例如EventSource)維護了一個事件監聽器列表(例如listenerList),事件監聽器(例如EventListener)向事件源注冊,當事件源觸發某個事件(例如EventObject)時,它會將事件對象傳遞給所有注冊的事件監聽器,并調用它們的處理方法(例如handleEvent())。