| |
++ swing读书笔记事件处理
2-1:事件处理: source event event listener -------------------------------------------------------------------------------------------------------------- abstractbutton actionevent actionlistener (jbutton,jtogglebutton, changeevent changelistener jcheckbox,jradiobutton itemevent itemlistener ------------------------------------------------------------------------------------------------------- jtextfield actionevent actionlistener jpasswordfield caretevent caretlistener documentevent documentlistener undoableevent undoablelistener ------------------------------------------------------------------------------------------------------- jtextarea caretevent caretlistener documentevent documentlistener undoableevent undoablelistener ------------------------------------------------------------------------------------------------------- jtextpane caretevent caretlistener jeditorpane documentevent documentlistener undoableevent undoablelistener hyperlinkevent hyperlinklistener ------------------------------------------------------------------------------------------------------- jcombobox actionevent actionlistener itemevent itemlistener ------------------------------------------------------------------------------------------------------- jlist listselectionevent listselectionlistener listdataevent listdatalistener ------------------------------------------------------------------------------------------------------- jfilechooser actionevent actionlistener ------------------------------------------------------------------------------------------------------- jmenuitem actionevent actionlistener changeevent changelistener itemevent itemlistener menukeyevent menukeylistener menudragmouseevent menudragmouselistener ------------------------------------------------------------------------------------------------------- jmenu menuevent menulistener ------------------------------------------------------------------------------------------------------- jpopupmenu popupmenuevent popupmenulistener ------------------------------------------------------------------------------------------------------- jprogressbar changeevent changelistener ------------------------------------------------------------------------------------------------------- jslider changeevent changelistener ------------------------------------------------------------------------------------------------------- jscrollbar adjustmentevent adjustmentlistener ------------------------------------------------------------------------------------------------------- jtable listselectionevent listselectionlistener tablemodeevent tablemodelistener tablecolumnmodelevent tablecolumnmodelistener celleditorevent celleditorlistener ------------------------------------------------------------------------------------------------------- jtabbedpane changeevent changelistener ------------------------------------------------------------------------------------------------------- jtree treeselectionevent treeselectionlistener treeexpansionevent treeexpansionlistener treewillexpandevent treewillexpandlistener treemodeevent treemodelistener ------------------------------------------------------------------------------------------------------- jtimer actionevent actionlistener ------------------------------------------------------------------------------------------------------- 底层事件:
---------------------------------------------------------------------------------------------------------------
event listener componentevent componentlistener containerevent conatainerlistener focusevent focuslistener keyevent keylistener mouseevent mouselistener mousemotionevent mousemotionlistener windowevent windowlistener componentevent:主要处理组件大小的改变,位置的改变,或是可见与不可见状态(hidden or visible)等。 containerlistener:主要在处理组件的加入或移出容器。 focuslistener:主要在处理焦点的取得或移开焦点等操作。 mouselistener:主要就是在处理鼠标是否在某个组件上,是否按下鼠标键,是否离开某个组件等操作,主要针对鼠标按键与位置 作处理。 mousemotionlistener:主要就是在追踪鼠标的位置,如(x,y)坐标的位置,主人是针对鼠标坐标与拖曳操作作处理。 windowlistener:主要在处理窗口的所有操作。如处理active窗口或是de-active窗口,处理窗口的最大、最小化,处理窗口的关闭 、打开、退出等。
以上所述的每种eventlistener都是一种interface,里面只有定义这个eventlistener的interface,然后在这个类中,把要处理事 件的程序代码写在此interface的方法中。这是处理事件的标准操作,当然还有其他编写模式,如:利用inner class的匿名类方法 ,就可以不用在class后面加上implements eventlistener的表示法,或是利用adapter类,就不用一一将interface中的每种方法都 实现。 让我们来了解一下,每一种eventlistener的interface到底提供了哪几种方法要我们实现(implement)!我们把事件区分成是由 swing或是awt所引发: swing eventlistener method ---------------------------------------------------------------------------------------------------------------- caretlistener caretupdate(caretevent e) -------------------------------------------------------------------------------------------------------------- celleditorlistener editingcanceled(changeevent e) editingstopped(changeevent e) -------------------------------------------------------------------------------------------------------------- changelistener statechanged(changeevent e) -------------------------------------------------------------------------------------------------------------- documentlistener changedupdate(documentevent e) insertupdate(documentevent e) removeupdate(documentevent e) -------------------------------------------------------------------------------------------------------------- hyperlinklistener hyperlinkupdate(hyperlinkevent e) -------------------------------------------------------------------------------------------------------------- listdatalistener contentschanged(listdataevent e) intervaladded(listdataevent e) intervalremoved(listdataevent e) -------------------------------------------------------------------------------------------------------------- listselectionlistener valuechanged(listselectionevent e) -------------------------------------------------------------------------------------------------------------- menudragmouselistener menudragmousedragged(menudragmouseevent e) menudragmouseentered(menudragmouseevent e) menudragmouseexited(menudragmouseevent e) menudragmousereleased(menudragmouseevent e) -------------------------------------------------------------------------------------------------------------- menukeylistener menukeypressed(menukeyevent e) menukeyreleased(menukeyevent e) menukeytyped(menukeyevent e) -------------------------------------------------------------------------------------------------------------- menulistener menucanceled(menuevent e) menudeselected(menuevent e) menuselected(menuevent e) -------------------------------------------------------------------------------------------------------------- popupmenulistener popupmenucanceled(popupmenuevent e) popupmenuwillbecomeinvisible(popupmenuevent e) popupmenuwillbecomevisible(popupmenuevent e) -------------------------------------------------------------------------------------------------------------- tablecolumnmodellistener columnadded(tablecolumnmodelevent e) columnmarginchanged(changeevent e) columnmoved(tablecolumnmodelevent e) columnremoved(tablecolumnmodelevent e) columnselectionchanged(listselectionevent e) -------------------------------------------------------------------------------------------------------------- tablemodellistener tablechanged(tablemodelevent e) -------------------------------------------------------------------------------------------------------------- treeexpansionlistener treecollapsed(treeexpansionevent event) treeexpanded(treeexpansionevent event) --------------------------------------------------------------------------------------------------------------- treemodellistener treenodeschanged(treemodelevent e) treenodesinserted(treemodelevent e) treenodesremoved(treemodelevent e) treestructurechanged(treemodelevent e) --------------------------------------------------------------------------------------------------------------- treeselectionlistener valuechanged(treeselectionevent e) --------------------------------------------------------------------------------------------------------------- treewillexpandlistener treewillcollapse(treeexpansionevent event) treewillexpand(treeexpansionevent event) --------------------------------------------------------------------------------------------------------------- undoableeditlistener undoableedithappened(undoableeditevent e) ---------------------------------------------------------------------------------------------------------------
awt eventlistener method -------------------------------------------------------------------------------------------------------------- actionlistener actionperformed(actionevent e) -------------------------------------------------------------------------------------------------------------- adjustmentlistener adjustmentvaluechanged(adjustmentevent e) -------------------------------------------------------------------------------------------------------------- componentlistener componenthidden(componentevent e) componentmoved(componentevent e) componentresized(componentevent e) componentshown(componentevent e) -------------------------------------------------------------------------------------------------------------- containerlistener componentadded(containerevent e) componentremoved(containerevent e) -------------------------------------------------------------------------------------------------------------- focuslistener focusgained(focusevent e) focuslost(focusevent e) -------------------------------------------------------------------------------------------------------------- itemlistener itemstatechanged(itemevent e) -------------------------------------------------------------------------------------------------------------- keylistener keypressed(keyevent e) keyreleased(keyevent e) keytyped(keyevent e) -------------------------------------------------------------------------------------------------------------- mouselistener mouseclicked(mouseevent e) mouseentered(mouseevent e) mouseexited(mouseevent e) mousepressed(mouseevent e) mousereleased(mouseevent e) -------------------------------------------------------------------------------------------------------------- mousemotionlistener mousedragged(mouseevent e) mousemoved(mouseevent e) -------------------------------------------------------------------------------------------------------------- windowlistener windowactivated(windowevent e) windowclosed(windowevent e) windowclosing(windowevent e) windowdeactivated(windowevent e) windowdeiconified(windowevent e) windowiconified(windowevent e) windowopened(windowevent e) ---------------------------------------------------------------------------------------------------------------
常用的adapter类如下: adapter 对应的eventlistener --------------------------------------------------------------------------------------------------------------- java.awt.event.componentadapter componentlistener java.awt.event.containeradapter containerlistener java.awt.event.focusadapter focuslistener java.awt.event.keyadapter keylistener java.awt.event.mouseadapter mouselistener java.awt.event.mousemotionadapter mousemotionlistener java.awt.event.windowadapter windowlistener --------------------------------------------------------------------------------------------------------------- 在java中提供两个方法让你知道到底是哪个组件触发了事件,那就是getsource()与getactioncommane();getactioncommand() 方法是actionevent类所提供,而getsource()方法是eventobject类所提供,但actionevent类继承了eventobject类,因此这两个 方法actionevent都可以使用,看下面的例子就知道了: eventdemo5.java
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class eventdemo5 extends windowadapter implements actionlistener { jbutton b1 = null; jbutton b2 = null; public eventdemo5() { jframe f = new jframe("eventdemo5"); container contentpane = f.getcontentpane(); contentpane.setlayout(new gridlayout(1,2)); b1 = new jbutton("按我有声音喔"); b2 = new jbutton("按我可开新窗口"); b1.addactionlistener(this); b2.addactionlistener(this); contentpane.add(b1); contentpane.add(b2); f.pack(); f.show(); f.addwindowlistener(this); }
public void actionperformed(actionevent e) { if(e.getsource()==b1)//getsource判断哪个按钮被按下了。 toolkit.getdefaulttoolkit().beep(); if(e.getsource()==b2) { jframe newf = new jframe("新窗口"); newf.setsize(200,200); newf.show(); } } public void windowclosing(windowevent e) { system.exit(0); } public static void main(string args[]) { new eventdemo5(); } }
------------------------------------------------------------------------------------------------------------- eventdemo6.java
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class eventdemo6 extends windowadapter implements actionlistener { jbutton b1 = null; jbutton b2 = null; public eventdemo6() { jframe f = new jframe("eventdemo6"); container contentpane = f.getcontentpane(); contentpane.setlayout(new gridlayout(1,2)); b1 = new jbutton("按我有声音喔"); b2 = new jbutton("按我可开新窗口"); b1.addactionlistener(this); b2.addactionlistener(this); contentpane.add(b1); contentpane.add(b2); f.pack(); f.show(); f.addwindowlistener(this); }
public void actionperformed(actionevent e) { if((e.getactioncommand()).equals("按我有声音喔")) //getactioncommand()方法会返回按钮上的文字字符串。 toolkit.getdefaulttoolkit().beep(); if((e.getactioncommand()).equals("按我可开新窗口")) { jframe newf = new jframe("新窗口"); newf.setsize(200,200); newf.show(); } } public void windowclosing(windowevent e) { system.exit(0); } public static void main(string args[]) { new eventdemo6(); } }
|
|