8.1.4 程序实例

8.1.4 程序实例

【例8-1】设计一个程序将JFrame元件的窗口关闭。

【设计思路】程序FrameEvent.java中关闭窗口的动作事件(按窗口右上角关闭所发生的事件)委托给MyWindowListener事件倾听对象去处理,该倾听对象继承自WindowAdapter类,使用windowClosing()方法关闭FrameEvent所使用的框窗口。如此就将应用程序的GUI接口,如FrameEvent与事件处理MyWindowListener分开处理,对于应用程序的可移植性有很大的帮助。例如设计一个很好的接口,可在许多平台上操作,只要对各个平台设计相对应的事件处理就可以了。

当按窗口右上角的关闭按钮时,触发一个关闭窗口事件WINDOW_CLOSING, 启动MyWindowListener对象的windowClosing()方法,为什么会启动MyWindowListener这个对象呢?因为在FrameEvent.java中程序里第22行已经使用addWindowListener()方法登记关闭窗口的事件要委托MyWindowListener对象处理了。这个事件倾听对象就是new MyWindowListener()。

本例中windowClosing()方法就是单纯地将应用程序结束而已。

MyWindowListener.java的代码如下:

img332

System. exit(1);}}

程序FrameEvent.java的源代码如下:

img333

【程序说明】

本程序中因FrameEvent继承自JFrame类,它属于Swing元件,因此将javax.swing.*调入程序中,FrameEvent间接继承Component元件,因此将java.awt.*也调入。要触发事件,因此将java.awt.event.*也一并调入,至于MyWindowListener这个类因为放在与FrameEvent类同一个目录中,调入或不调入都可以,标明调入对于程序的可读性较佳。

【例8-2】设计一个按钮元件的倾听对象,每按一下按钮,就在文本区域元件显示一个按键次数信息。程序设计如下:

img334

img335

【程序说明】

程序第22行将button元件的按钮事件委托给本应用程序ButtonEvent类对象(this)的actionPerformed()方法处理,因为this代表本类对象,它也是单击事件的倾听对象。第24~28行的actionPerformed()实作了ActionListener接口,这在第7行已经声明ButtonEvent类继承自JFrame而要实作ActionListener接口。

【例8-3】设计一个程序执行鼠标在框窗口JFrame元件的事件,包含下列事件和相对应的方法,并将结果显示在JLabel元件。

1.单击MOUSE_CLICKED:mouseClicked()

2.按下MOUSE_PRESSED:mousePressed()

3.松开MOUSE_RELEASED:mouseReleased()

4.进入MOUSE_ENTERED:mouseEntered()

5.退出MOUSE_EXITED:mouseExited()

6.移动MOUSE_MOVED:mouseMoved()

程序设计如下:

img336

img337

【程序说明】

本程序将鼠标的事件使用实作MouseListener鼠标倾听接口的方式,因此必须实作MouseListener接口中的所有方法。第21~25行实作处理单击的mouseClicked()方法,知识单纯的显示Pressed at[x,y]于鼠标所在处,x和y为鼠标所在处的坐标。MouseReleased()放空不用,其余方法与mouseClicked()方法类似。