C#的委托与Java的自定义接口的异曲同工的同步操作
C#的委托(以WinForm为例)
在子窗体(ChildFrm)中定义一个委托
this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
/// <summary>
/// 子窗体:在子窗体中定义一个委托,供调用都设置侦听,并可与此窗体的某个事件同时执行自身指定的事件
/// 定义 委托
/// </summary>
public partial class ChildFrm : Form
{
public ChildFrm()
{
InitializeComponent();
} /// <summary>
/// 定义委托(同Java中的接口)
/// </summary>
/// <param name="callback">可以是任意类型</param>
public delegate void CaptureListenEvent(string callback); /// <summary>
/// 声明委托
///from:博客园-曹永思http://www.cnblogs.com/yonsy/p/3631116.html
/// </summary>
public CaptureListenEvent CaptureListener = null; /// <summary>
/// 调用者设置侦听
/// </summary>
/// <param name="CaptureListener"></param>
public void SetCaptureListener(CaptureListenEvent CaptureListener)
{
this.CaptureListener = CaptureListener;
} /// <summary>
/// 被侦听的窗体执行一个事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
WiteContent();//
}
/// <summary>
/// 写入值
/// </summary>
public void WiteContent()
{
string callback = richTextBox1.Text; //触发被侦听的委托
this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
//this.CaptureListener.Invoke(callback);//子窗体触发委托事件,以告诉调用的窗体
} }
Code By 博客园-曹永思
在主窗体(MainFrm)设置对子窗体委托的侦听
//设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
/// <summary>
/// 主窗体
/// 调用个关联子窗体
/// 设置子窗体中的侦听
/// </summary>
public partial class MainFrm : Form
{
//子窗体
ChildFrm frm = new ChildFrm(); public MainFrm()
{
InitializeComponent(); //设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
} private void button1_Click(object sender, EventArgs e)
{
//打开子窗体
frm.Show();
} /// <summary>
/// 子窗体触发委托事件时,主窗体同时会执行的方法
///code by:博客园-曹永思
/// </summary>
/// <param name="callback"></param>
public void CaptureInfo(string callback)
{
richTextBox1.Text = richTextBox1.Text + callback + "\n";
}
}
=====================================================================
Java的自定义接口
定义接口的类(HuangLiMonthActivity):
//定义接口的类: /*
* 声明一个接口
*/
public static YueLiClickListener yueLiClickListener; /*
* 设置接口侦听
*/
public static void setYueLiClickListener(YueLiClickListener clickListener) {
yueLiClickListener = clickListener;
} //在某个方法中绑定侦听
//绑定触发的事件-调用都实现这个方法以处理自身的逻辑
yueLiClickListener.OnClick(iyear, imonth, iday);
调用接口的类(HuangLiMonthPanelActivity):
//实现接口绑定的侦听事件
YueLiClickListener clickListener = new YueLiClickListener() { @Override
public void OnClick(int year, int month, int day) {
// TODO Auto-generated method stub
getRiLiData(year, month, day);
mYear = year;
mMonth = month;
mDay = day;
}
}; //设置接口侦听
HuangLiMonthActivity.setYueLiClickListener(clickListener);
C#的委托与Java的自定义接口的异曲同工的同步操作的更多相关文章
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
- Java中 Comparator接口 与Comparable 的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt159 comparator接口与Comparable接口的区别 1. Com ...
- 使用Java代码自定义Ribbon配置
很多场景下,需要实现不同的微服务采用不同的策略,例如修改Ribbon的负载均衡规则等.Spring Cloud允许使用Java代码自定义Ribbon的配置. 在Spring Cloud中,Ribbon ...
- java中自定义注释@interface的用法
一.什么是注释 说起注释,得先提一提什么是元数据(metadata).所谓元数据就是数据的数据.也就是说,元数据是描述数据的.就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义.而J ...
- JNI的又一替代者—使用JNR访问Java外部函数接口(jnr-ffi)
1. JNR简单介绍 继上文“JNI的替代者—使用JNA访问Java外部函数接口”,我们知道JNI越来越不受欢迎,JNI是编写Java本地方法以及将Java虚拟机嵌入本地应用程序的标准编程接口.它管理 ...
- java注解自定义使用
Java提供了4种注解,专门负责新注解的创建: @Target: 表示该注解可以用于什么地方,可能的ElementType参数有:CONSTRUCTOR:构造器的声明FIELD:域声明(包括enum实 ...
- spring data 自定义接口
1 spring data jpa 虽然说spring data 提供了很多DAO 接口,但是依然可能不能满足我们日常的使用,所以,有时我们需要自定义接口方法.自定义接口方法步骤如下: 1. 创建自 ...
- Java 线程--实现java.lang.Runnable接口实现线程
Java线程的第一种实现方式,主要分两步,第一步是继承java.lang.Thread; 第二步是重写run()方法.接下来我们来看Java线程的第二种实现方式,也是分为两步,第一步,写一个类实现ja ...
- java集合类型接口和实现类个人总结
转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...
随机推荐
- Jquery的Ajax中contentType和dataType的区别
$.ajax({ type: httpMethod, cache:false, async:false, contentType: "application/json; charset=ut ...
- html 导出pdf
地址: https://developers.itextpdf.com/examples/xml-worker/html-lists 主方法: public string Generate(strin ...
- Tomcat配置远程调试端口(windows、Linux)
当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: decl ...
- WebApi2跨域问题及解决办法
跨域问题产生的原因 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能.现在所有支持JavaScript的浏览器都会使用这个策略.所谓同源是指,域名,协议, ...
- stark组件开发之自动生成URL
app01\model.py from django.db import models # Create your models here. class Depart(models.Model): i ...
- 梦殇 chapter five
一弦情殇未谱,半纸离愁难书,不记年,叹花开几度...... 蜡烛用它自己的死亡来温暖别人,奉献自己的同时,它内心是快乐的吗?那残留的蜡油是它的泪水,还是它快乐的预兆? 这个世界上除了父母家人外,会有真 ...
- JAVA程序 从命令行接受多个数字,求和之后输出结果
源程序代码: public class sum{ public static void main(String[] args){ double[] a=new double[4]; a[0]=Doub ...
- linux内核中hlist_head和hlist_node结构解析
hlist_head和hlist_node用于散列表,分表表示列表头(数组中的一项)和列表头所在双向链表中的某项,两者结构如下: 1 2 3 struct hlist_head { struct hl ...
- UIButton 设置图片文字垂直居中排列
#pragma mark 按钮图片文字垂直居中排列 -(void)setButtonContentCenter:(UIButton *)button { CGSize imgViewSize,titl ...
- having 的用法
聚合函数 where 后面不能直接使用聚合函数 处理函数 题目 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱. 示例: +----+---------+ | Id | Email ...