java设计模式,观察者模式与awt 和模拟awt

java 自己的 button事件 awt 


源码分析,摘自尚学堂,多看几遍


package com.bjsxt.dp.observer.awt;


import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class TestFrame extends Frame {
public void launch() {
Button b = new Button("press me");
b.addActionListener(new MyActionListener());
b.addActionListener(new MyActionListener2());
this.add(b);
this.pack();

this.addWindowListener(new WindowAdapter(){


@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}

});

this.setVisible(true);
}

public static void main(String[] args) {
new TestFrame().launch();
}

private class MyActionListener implements ActionListener {


public void actionPerformed(ActionEvent e) {
System.out.println("button pressed!");
}

}

private class MyActionListener2 implements ActionListener {


public void actionPerformed(ActionEvent e) {
System.out.println("button pressed 2!");
}

}
}



模拟java awt

package com.bjsxt.dp.observer.awt;


import java.util.ArrayList;
import java.util.List;




public class Test {
public static void main(String[] args) {
Button b = new Button();
b.addActionListener(new MyActionListener());
b.addActionListener(new MyActionListener2());
b.buttonPressed();
}
}


class Button {

private List<ActionListener> actionListeners = new ArrayList<ActionListener>();

public void buttonPressed() {
ActionEvent e = new ActionEvent(System.currentTimeMillis(),this);
for(int i=0; i<actionListeners.size(); i++) {
ActionListener l = actionListeners.get(i);
l.actionPerformed(e);
}
}

public void addActionListener(ActionListener l) {
actionListeners.add(l);
}
}


interface ActionListener {
public void actionPerformed(ActionEvent e);
}


class MyActionListener implements ActionListener {


public void actionPerformed(ActionEvent e) {
System.out.println("button pressed!");
}

}


class MyActionListener2 implements ActionListener {


public void actionPerformed(ActionEvent e) {
System.out.println("button pressed 2!");
}

}


class ActionEvent {

long when;
Object source;

public ActionEvent(long when, Object source) {
super();
this.when = when;
this.source = source;
}


public long getWhen() {
return when;
}


public Object getSource() {
return source;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值