日期:2011-03-22 16:16:00 来源:本站整理
java的handleEvent()办法[Java编程]
本文“java的handleEvent()办法[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
到目前为止,我们已利用了action(),现有另一种办法handleEvent()可对每一事件举行尝试.当一个事件发生时,它老是针对单独事件或发生在单独的事件对象上.该对象的handleEvent()办法是自动调用的,并且是被handleEvent()成立并传送到handleEvent()里.默许的handleEvent()(handleEvent()定义在组件里,底子类的全部控件都在AWT里)将像我们从前一样调用action()或别的一样的办法去指明鼠标的活动、键盘活动大概指明移动的核心.我们将会在本章的背脸部份看到.
假如别的的办法-分外是action()-不能满意我们的需求怎么办呢?至于列表框,比方,假如我想捕捉鼠标单击,但action()只呼应双击怎么办呢?这个解答是过载handleEvent(),毕竟它是从程序片中得到的,因此可以过载任何非肯定的办法.当我们为程序片过载handleEvent()时,我们会得到全部的事件在它们发送出去之前,所以我们不能假定“这里有我的按钮可做的事件,所以我们可以假定按钮被按下了”从它被action()设为真值.在handleEvent()中按钮拥有核心且某人对它举行分配都是大概的.不管它公道与否,我们可测试这些事件并遵循handleEvent()来举行操作.
为了改正列表样本,使它会呼应鼠标的单击,在action()中按钮测试将被过载,但代码会处理的列表将像下面的例子被移进handleEvent()中去:
这个例子同前面的例子相同除了增添了handleEvent()外简直一模一样.在程序中做了试验来考证能否列表框的挑选和非挑选存在.目前请记着,handleEvent()被程序片所过载,所以它能在窗体中任何存在,并且被别的的列表当作事件来处理.因此我们一样必须通过试验来察看目标.(固然在这个例子中,程序片中只有一个列表框所以我们能假定全部的列表框事件必须服务于列表框.这是一个不好的习惯,一旦别的的列表框加入,它就会变成程序中的一个缺陷.)假如列表框匹配一个我们感爱好的列表框,像前面的一样的代码将按上面的战略来运行.注意handleEvent()的窗体与action()的相同:假如我们处理一个单独的事件,将返回真值,但假如我们对别的的一些事件不感爱好,通过handleEvent()我们必须返回super.handleEvent()值.这就是程序的核心,假如我们不那样做,别的的任何一个事件处理代码也不会被调用.比方,试注解在上面的代码中返回super.handleEvent(evt)的值.我们将发现action()没有被调用,当然那不是我们想得到的.对action()和handlEvent()而言,最重要的是随着上面例子中的格局,并且当我们自己不处理事件时一向返回底子类的办法版本信息.(在例子中我们将返回真值).(幸运的是,这些范例的错误的仅属于Java 1.0版,在本章背面将看到的新计划的Java 1.1消除了这些范例的错误.)//: List2.java // Using lists with handleEvent() import java.awt.*; import java.applet.*; public class List2 extends Applet { String[] flavors = { "Chocolate", "Strawberry", "Vanilla Fudge Swirl", "Mint Chip", "Mocha Almond Fudge", "Rum Raisin", "Praline Cream", "Mud Pie" }; // Show 6 items, allow multiple selection: List lst = new List(6, true); TextArea t = new TextArea(flavors.length, 30); Button b = new Button("test"); int count = 0; public void init() { t.setEditable(false); for(int i = 0; i < 4; i++) lst.addItem(flavors[count++]); add(t); add(lst); add(b); } public boolean handleEvent(Event evt) { if(evt.id == Event.LIST_SELECT || evt.id == Event.LIST_DESELECT) { if(evt.target.equals(lst)) { t.setText(""); String[] items = lst.getSelectedItems(); for(int i = 0; i < items.length; i++) t.appendText(items[i] + "\n"); } else return super.handleEvent(evt); } else return super.handleEvent(evt); return true; } public boolean action(Event evt, Object arg) { if(evt.target.equals(b)) { if(count < flavors.length) lst.addItem(flavors[count++], 0); } else return super.action(evt, arg); return true; } } ///:~
在windows里,假如我们按下shift键,列表框自动答应我们做多个挑选.这非常的棒,因为它答应用户做单个或多个的挑选而不是编程期间固定的.我们大概会认为我们变得越发的夺目,并且当一个鼠标单击被evt.shiftdown()产生时假如shift键是按下的将履行我们自己的试验程序.AWT的计划阻碍了我们-我们不得不去理解哪个项目被鼠标点击时能否按下了shift键,所以我们能撤消别的部份全部的挑选并且只挑选那一个.不管怎样,我们是不大概在Java 1.0版中做出来的.(Java 1.1将全部的鼠标、键盘、核心事件传送到列表中,所以我们可以完成它.)
以上是“java的handleEvent()办法[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论