++ 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();
}
}
闽公网安备 35060202000074号