今天听群里人谈到.net的事件委托.貌似JAVA里是与内部类和接口有关..
对这俩的应用都模糊,求高人给一实例参看
解决方案 »
- 麻烦分析下这个简单的java程序
- servlet问题,求助
- jdbc4型驱动链接3个jar包,mssqlserver.jar,msbase.jar,msutil...怎么配置
- 大家都用什么操作系统 WIN7好吗?谁有免激活版?
- java实现调用EXE文件并代添账号密码思路
- 怎么判断一个字符是否为空字符?
- JTextPane如何识别选中的图形~~……!!!
- 一个初学者对方法调用的疑惑
- 编译成功,但运行时显示"Exception in thread "main" java.lang.NoClassDefFoundError: hello/class ",这时为什么.
- 如何读取一个整数
- 求一个验证引号的正则表达式!!!在线等!!!
- 用jasperreports的JasperDesign
接口有关 -- 针对接口中的钩子方法集合做相应的实现 默认适配方法[实际是貌似钩子方法?]
内部类有关 --直接在代码快里实现接口达到隐藏细节 这个可以自由选择, 据说会做inline 优化?不清楚
interface MyListener{void actionPerformed();}
class MyButton
{
ArrayList< MyListener > myListeners = new ArrayList< MyListener >();
public void addListener(MyListener listener)
{
myListeners .add(listener);
}
public void doClick()
{
for(int i=0;i< myListeners.length;i++) myListeners[i]. actionPerformed();
}
}
添加监听
button1. addListener(
new MyListener()
{
public void actionPerformed()
{
JOptionPane.showMessageDialog(frame,
"我被点了");
}
}
);C#的方式
deletegate void MyDelegate(); //委托
class MyButton
{
public event MyDelegate OnClick; //事件
public void DoClick()
{
if(OnClick!=null) OnClick();
}
}
添加监听
public void SayHello(){MessageBox.Show("Hello");}
button1. OnClick += new MyDelegate(SayHello);