Ch02 作一个自己的视窗类别_第1页
Ch02 作一个自己的视窗类别_第2页
Ch02 作一个自己的视窗类别_第3页
Ch02 作一个自己的视窗类别_第4页
Ch02 作一个自己的视窗类别_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C CH H02 02 作一個自己的視窗類別作一個自己的視窗類別物件導向系統實務物件導向系統實務運用繼承的概念來建造一個自己的視窗一個視窗包含三個部份:視窗的外觀、視窗的動作、連線視窗外觀:也就是class Jframe()視窗的動作:當使用者在視窗上按了什麼地方或是按了滑鼠等等的動作,那麼系統應該如何做什麼動作回應。這個動作會看是那一種元件,不同元件,會有不同的對應動作方法,一般我們稱作傾聽者listener,可以想像成是一個耳朵連線:視窗元件外觀和傾聽者間的連線事件與傾聽者間的關係2021/11/23按鈕1 事件:敲擊滑鼠按鍵(mouseClick)按鈕委任一個MouseListener物

2、件,以接收並回應mouseClick事件源ouseListener物件 委任一個addMouseListener()接收及回應mouseClick屬java.awt.event.*的mouseListener介面,介面中定義了mouseClick, mousePress等方法屬java.awt.*的Button內的方法建造自己的視窗類別STEP1:繼承視窗類別建造自己的視窗類別,第一步是先要有視窗可以採用繼承class Frame 或class JFrame程式碼:class MyWindow extends Frame或class MyWindow extends JFrame建造自己的視窗

3、類別STEP2:處理視窗事件-1處理視窗事件的方式有兩種:1.利用Listener介面2.利用adapter抽象類別實作Listener介面建造自己的視窗類別STEP2:處理視窗事件-2處理視窗事件的Listener介面分成:Window Listener:處理視窗開啟、關閉、最小化時所產生的事件Window Focus Listener:處理視窗取得或失去焦點所產生的事件Window State Listener:處理視窗因狀態改變時,所產生的變化(狀態改變是指前述二者的狀態)建造自己的視窗類別STEP2:處理視窗事件-3WindowListener介面的方法:複習介面是指其所有的方法都只有

4、抽象方法,亦即只宣告方法名稱及資料型態,而沒有程式實作的部份介面的繼承可以是多重繼承繼承介面的類別必須實作介面中的所有方法,才可以用來宣告建構子java.awt.event.WindowListenerrjava.awt.event.WindowListenerrinterface WindowListenerinterface WindowListenervoidvoidwindowActivated(WindowEvent e)voidvoidwindowClosed(WindowEvent e)voidvoidwindowClosing(WindowEvent e)voidvoidwin

5、dowDeactivated(WindowEvent e)void void windowDeiconified(WindowEvent e)voidvoidwindowIconified(WindowEvent e)voidwindowOpened(WindowEvent e)建造自己的視窗類別STEP3:註冊視窗事件介面ListenerListener介面介面相對應的註冊相對應的註冊Window ListeneraddWindowListener(WindowListener listener)Window Focus ListeneraddWindowFocusListener)Wind

6、owFocusListener listener)Window State ListeneraddWindowStateListener(WindowStateListener listener)範例1:繼承JFRAME類別和WINDOWLISTENER介面1.import java.awt.*;2.import java.awt.event.*;3.import javax.swing.*;4.class WIN35. public static void main(String args)6. MyJFrame JWIN3 = new MyJFrame(ABC);7. JWIN3.setV

7、isible(true);8. 9.10.class MyJFrame extends JFrame 11. implements WindowListener12. MyJFrame(String s)13. super(s);14. this.addWindowListener(this);15. 16. public void windowActivated(WindowEvent e) 17. public void windowClosed(WindowEvent e) 18. public void windowClosing(WindowEvent e) 19. System.o

8、ut.println(Bye2!);20. System.exit(0);21. 22. public void windowDeactivated(WindowEvent e) 23. public void windowDeiconified(WindowEvent e) 24. public void windowIconified(WindowEvent e) 25. public void windowOpened(WindowEvent e) 26.建造自己的視窗類別再談STEP2:處理視窗事件觀察範例1,可以發現,因為是繼承了WindowListener介面,所以必須實作所有的方

9、法,而其中有多個方法是空方法,這很不方便,而且容易打錯Java中,針對這部份,介面有其相應的Adapter類別我們可以藉由繼承這類Adapter來建立物件後,再註冊到視窗上範例2:繼承JFRAME類別和註冊一個自製的ADAPTER1./利用JFrame類別來建立一個視窗2.import java.awt.*;3.import java.awt.event.*;4.import javax.swing.*;5.class WIN46.7. public static void main(String args)8. 9. JFrame JWIN4 = new JFrame(ABC);10. JW

10、IN4.addWindowListener(new MyAdapter();11. JWIN4.setVisible(true);12. 13.14.class MyAdapter extends WindowAdapter 15.16. public void windowClosing(WindowEvent e) 17. System.out.println(Bye2!);18. System.exit(0);19. 20.建造自己的視窗類別三談STEP2:處理視窗事件由範例2,可發現我們自製了一個Adapter類別,只用了一次,並且只建立了一個物件,有點太浪費了,所以我們採用inner

11、 class,在宣告物件的同時才去定義類別,而且不用為此只用了一次的類別,特別去宣告範例3:繼承JFRAME類別和INNER CLASS1./利用JFrame類別來建立一個視窗2.import java.awt.*;3.import java.awt.event.*;4.import javax.swing.*;5.class WIN46.7. public static void main(String args)8. 9. JFrame JWIN4 = new JFrame(ABC);10. JWIN4.addWindowListener(new MyAdapter();11. JWIN4

12、.setVisible(true);12. 13.14.class MyAdapter extends WindowAdapter 15.16. public void windowClosing(WindowEvent e) 17. System.out.println(Bye2!);18. System.exit(0);19. 20.1./利用JFrame類別來建立一個視窗2.import java.awt.*;3.import java.awt.event.*;4.import javax.swing.*;5.class WIN56.7. public static void main(String args)8. 9. JFrame JWIN5 = new JFrame(ABC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论