Java回调函数
来源:互联网 发布:mac切换字母和拼音 编辑:程序博客网 时间:2024/06/05 02:49
回调函数的实现步骤
- 回调函数就是由客户端自己决定回调函数要实现的功能。(决定权交给了客户端)比如:OnTimer()定时器的回调函数,时间到了,需要做什么,交给客户端自己处理,想添加任何功能都行。
- 利用回调函数实现服务器端与客户端的交流、异步通信。
- 回调函数一般用于截获消息、获取系统信息或处理异步事件。
回调函数的实现步骤
- Server定义接口--------->服务器端需要先制定一个接口,制定服务端需要的各种参数。
- Server设定回调条件----->服务器端设定调用回调函数的条件,制定注册函数。
- Client实现接口---------->客户端实现服务器端制定的接口
- Client注册-------------->即:向服务器端传递参数,也是告知服务器端自己的某种需求。
回调函数实例
服务器端制定的接口
/** * 服务器端定义的一个接口, * 通过该接口服务器可以将数据传递给实现该接口的客户端 * @author java_han * */public interface ICallBack {void doSomething(String st);}服务端程序
import java.util.Scanner;/** * 该类相当于一个服务器端程序, * 给注册过的客户端UI, * 动态的返回需要更新的数据。 * @author java_han * */public class DataSource extends Thread {static ICallBack ic;// 给回调函数注册一个空的对象public DataSource() {ic = new ICallBack() {@Overridepublic void doSomething(String st) {}};}// 根据设定的条件给注册的过的客户端返回字符串数据@Overridepublic void run() {Scanner sc = new Scanner(System.in);String st;while ((st = sc.nextLine()) != null) {ic.doSomething(st);System.out.println(st);}}// 客户端的注册函数public void setICallBack(ICallBack ic) {this.ic = ic;}}
客户端程序
import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;/** * 利用回调函数实现异步更新数据 * * 此类相当于一个客户端程序; * 实现了服务器端制定的接口, * 然后向服务器端注册, * 才能动态的获取服务器端返回的数据。 * @author java_han * */public class UI extends JFrame implements ICallBack {static UI ui;String s = "";public static void main(String[] args) {ui = new UI();ui.setBounds(100, 100, 400, 300);ui.setDefaultCloseOperation(EXIT_ON_CLOSE);ui.setVisible(true);//启动服务器端程序,并向服务器端注册。DataSource t = new DataSource();t.setICallBack(ui);t.start();}//客户端自己定义回调函数的实现内容//此处是将服务端返回的数据显示在UI的textArea中。public void ChangeText(String st) {JPanel p = new JPanel();p.setLayout(null);p.setBounds(100, 100, 500, 300);// p.setBackground(Color.red);JScrollPane jsp = new JScrollPane();jsp.setBounds(20, 20, 300, 100);JTextArea jta = new JTextArea();jta.setBounds(20, 20, 300, 100);jta.setLineWrap(true);jsp.add(jta);st = s + " " + st;jta.setText(st);s = jta.getText();p.add(jta);ui.setContentPane(p);ui.setVisible(true);ui.validate();}@Overridepublic void doSomething(String st) {// TODO Auto-generated method stubChangeText(st);}}
0 0
- JAVA回调函数
- java回调函数
- Java回调函数
- Java 回调函数
- java回调函数
- Java 回调函数
- Java 回调函数
- Java回调函数
- Java回调函数
- java回调函数
- Java 回调函数
- Java 回调函数
- java回调函数
- Java 回调函数
- java 回调函数
- java回调函数
- java回调函数
- Java 回调函数
- Windows平台的SDK、DDK与WDK (转)
- yii2对数据库的基本操作
- auto c++
- 从今天开始写博客
- 最近公共祖先LCA问题
- Java回调函数
- Ubuntu10.04下的使用使用华为E1750 3G模块
- nagios监控失败报错It appears as though you do not have..
- Java ThreadLocal的使用
- 批量安装apk到android手机上
- [笔记]一些常用的
- QT打开应用程序(文件)方法
- iOS开发:创建真机调试证书
- Android添加新字体