eventhandler(EventHandler继承)
- 前端设计
- 2023-09-02
- 86
这篇文章给大家聊聊关于eventhandler,以及EventHandler继承对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。java中监听事件怎么设置一.使用...
这篇文章给大家聊聊关于eventhandler,以及EventHandler继承对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
java中监听事件怎么设置
一.使用内部类,一个个设置Button然后创建一个内部类,用ActionPerformed来实现按钮事件内容;
二.使用lambda表达式,但是这个方法比较繁琐,需要创建一个内部类,其实有更简单的方法,比如使用lambda表达式,而不需要创建内部类,我们可以把创建按钮和响应的部分放到一个方法里面;
三.使用匿名对象,当然使用lambda表达式肯定不是非用不可的,以前的方法是使用匿名对象,也是可以的;
四.自身框架做事件源容器,其实可以直接用JFrame本身做事件源容器,使ButtonFrame支持ActionListener接口,需要把按钮定义在属性中,然后在构造函数中添加的监听器中直接使用this像这样:greenButton.addActionListener(this);然后在自己类中实现ActionPerformed方法,使用Objectsource=e.getSource();获取到事件的更新源,然后用判断语句来判断是哪个按钮的事件依次执行事件操作;
五.使用EventHandler指定事件监听器,使用这样的方法EventHandler.create(ActionListener.class,frame,"loadData")创造一个ActionListener,这种方法用lambda表达式就等同于event->frame.localData();
iView的分页方法on-change事件怎么用
在设计自定义分页控件的时候,在分页控件类中定义一个当页码改变时触发的事件。
在类中判断事件是否被外部注册,如果已注册,则将事件的处理交给事件注册者。
publiceventEventHandlerOnPagerChanged;//判断if(OnPagerChanged!=null)
java链接red5的地址怎么设置
代码示例:
importjava.util.ArrayList;
importjava.util.Map;
importorg.red5.io.utils.ObjectMap;
importorg.red5.server.api.event.IEvent;
importorg.red5.server.api.event.IEventDispatcher;
importorg.red5.server.api.service.IPendingServiceCall;
importorg.red5.server.api.service.IPendingServiceCallback;
importorg.red5.server.net.rtmp.INetStreamEventHandler;
importorg.red5.server.net.rtmp.RTMPClient;
importorg.red5.server.net.rtmp.RTMPConnection;
importorg.red5.server.net.rtmp.codec.RTMP;
importorg.red5.server.net.rtmp.event.Notify;
publicclassRtmpClientNewextendsRTMPClientimplements
INetStreamEventHandler,IPendingServiceCallback,IEventDispatcher{
Stringhost="111.92.237.33";
Stringapp="chainGunSyncService";
intport=1935;
publicRtmpClientNew(){
super();
Map<String,Object>map=makeDefaultConnectionParams(host,
1935,"chainGunSyncService");
connect(host,1935,map,this,newString[]{"admin","",
"111.92.237.33"});
}
@Override
publicvoiddispatchEvent(IEventarg0){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidresultReceived(IPendingServiceCallcall){
//TODOAuto-generatedmethodstub
Objectresult=call.getResult();
if(resultinstanceofObjectMap){
if("connect".equals(call.getServiceMethodName())){
createStream(this);
}
}else{
if("createStream".equals(call.getServiceMethodName())){
if(resultinstanceofInteger){
IntegerstreamIdInt=(Integer)result;
//intstreamId=streamIdInt.intValue();
//publish(streamId,"testgio2","live",this);
invoke("getRoomsInfo",this);
}else{
disconnect();
}
}elseif("getRoomsInfo".equals(call.getServiceMethodName())){
ArrayList<String>list=(ArrayList<String>)result;
for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
}
@Override
publicvoidonStreamEvent(Notifyarg0){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidconnectionOpened(RTMPConnectionconn,RTMPstate){
//TODOAuto-generatedmethodstub
//System.out.println("connectionOpened");
super.connectionOpened(conn,state);
}
p
event事件类型
event同上。fn是事件处理函数,固定有两个参数,第一个是被监听对象的引用,第二个是传递过来的数据表。source是被监听对象,此参数可以为空。如果为空,则系统会默认source是监听对象自身。也就是自己监听自己。这在饥荒中非常常见。需要特别注意的是,可以通过重复使用ListenForEvent设置多个监听器,即使其参数完全一致也可以。
有时候我们希望监听器只使用若干次,之后不再监听。那么,可以使用RemoveEventCallback(event,fn)来移除监听器。需要注意的是,这里的fn必须首先由ListenForEvent注册过,如果fn未注册,则会崩溃报错。这个函数同样可以重复使用,可以看作是ListenForEvent的逆函数。
以上的几个函数都是EntityScript类的成员函数。所以实际调用时,是这样写的:对象引用名:PushEvent(event,data)或者对象引用名:ListenForEvent(event,fn,source)或者对象引用名:RemoveEventCallback(event,fn)
上面所提到的ListenForEvent是手动设置监听器,但其实还有另外一种特殊的,格式化了的监听器,EventHandler,参数只有event名和fn,没有source(因为已经默认了source就是监听对象自身了)。这个监听器通常是在StateGraph中被使用,用于转换prefab的State,这里不多提,等到以后讲StateGraph时再说。
如何在DataGrid控件中实现自定义分页
在一般情况下,DataGrid控件每次实现翻页操作时,都会将数据源中的数据重新调用一次,当数据中数据很多时,这样做就会很浪费系统资源和降低程序的执行效率.这时候我们一般通过自定义分页来解决这个问题.DataGrid控件的AllowCustomPaging属性用来获取或设置DataGrid控件是否允许自定义分页;VirtualItemCoun属性用来获取或设置在使用自定义分页时DataGrid中实际的项数.要实现自定义分页,必须将AllowPaging与AllowCustomPaging属性都设置为"True".在DataGrid中要实现自定义分页的关键是,使该控件仅仅调用当前显示所需要的数据源数据,在下面的例子中通过CurrentPageIndex和PageSize属性的值,在数据绑定时只取当前页需要的数据.(1)页面代码:复制代码代码如下:<%@Pagelanguage="c#"Codebehind="Main.aspx.cs"AutoEventWireup="false"Inherits="SissonDemo.Main"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><title>Main</title><metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1"><metaname="CODE_LANGUAGE"Content="C#"><metaname="vs_defaultClientScript"content="JavaScript"><metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><bodyMS_POSITIONING="GridLayout"><formid="Form1"method="post"runat="server"><FONTface="宋体"><asp:DataGridid="DataGrid1"runat="server"Width="792px"Height="96px"AllowCustomPaging="True"AllowPaging="True"PageSize="5"><PagerStyleMode="NumericPages"></PagerStyle></asp:DataGrid></FONT></form></body></HTML>(2)后台代码:复制代码代码如下:usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;usingSystem.Web.SessionState;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;namespaceSissonDemo{/**////<summary>///Main的摘要说明。///</summary>publicclassMain:System.Web.UI.Page{protectedSystem.Web.UI.WebControls.DataGridDataGrid1;intstartIndex=0;//用来保存当前页数据项的起始索引privatevoidPage_Load(objectsender,System.EventArgse){if(!IsPostBack){Bind();//初始化时进行数据绑定}}voidBind()//绑定数据方法{//定义数据库连接对象SqlConnectioncn=newSqlConnection("server=.;database=pubs;uid=sa;pwd=");//创建数据适配对象SqlDataAdapterda=newSqlDataAdapter("selecttitle_id,title,type,pub_id,price,pubdatefromtitles",cn);//创建DataSet对象DataSetds=newDataSet();try{//从指定的索引开始取PageSize条记录.da.Fill(ds,startIndex,DataGrid1.PageSize,"CurDataTable");da.Fill(ds,"AllDataTable");//填充数据集合//设置DataGrid控件实际要显示的项数DataGrid1.VirtualItemCount=ds.Tables["AllDataTable"].Rows.Count;//进行数据绑定DataGrid1.DataSource=ds.Tables["CurDataTable"];DataGrid1.DataBind();}catch{Page.RegisterClientScriptBlock("","<script>alert('数据显示错误');</script>");}}Web窗体设计器生成的代码#regionWeb窗体设计器生成的代码overrideprotectedvoidOnInit(EventArgse){////CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。//InitializeComponent();base.OnInit(e);}/**////<summary>///设计器支持所需的方法-不要使用代码编辑器修改///此方法的内容。///</summary>privatevoidInitializeComponent(){this.DataGrid1.PageIndexChanged+=newSystem.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);this.Load+=newSystem.EventHandler(this.Page_Load);}#endregionprivatevoidDataGrid1_PageIndexChanged(objectsource,System.Web.UI.WebControls.DataGridPageChangedEventArgse){//设置DataGrid当前页的索引值为用户选择的页的索引DataGrid1.CurrentPageIndex=e.NewPageIndex;//取得当前页为止总共有多少条记录,以便在下一页就从该记录开始读取startIndex=DataGrid1.PageSize*DataGrid1.CurrentPageIndex;//取得绑定数据Bind();}}}在这段程序中,首先在数据绑定时,设置DataGrid控件的VirtualItemCoun属性值为查询结果集中的记录总数,然后取得当前页要显示的数据,初始化时当前页显示的数据为从取到的数据的零位置开始,到DataGrid控件的PageSize属性的设定值为止的数据记录数.在分页操作中重新定义了取得下一页数据时的数据项的开始索引值,然后调用数据绑定方法把取到的新数据和DataGrid控件重新绑定.
关于eventhandler,EventHandler继承的介绍到此结束,希望对大家有所帮助。
本文链接:http://xinin56.com/qianduan/14352.html