1 / 17

Event-Driver Intput

Event-Driver Intput. AWT( 視窗物件 ). 大綱. 視窗物件 事件 Event 練習. 視窗物件. 視窗物件 AWT(Abstract Windowing Toolkit) 類別 用來處理圖形 ( 包含視窗與繪圖 ) 最基本的方式,它可以用來建立 Java 的 applet 及視窗程式。 本章節以此 AWT 介紹. AWT 視窗物件. 建立視窗 Frame 物件 可以當成是一個容器,用來容納其它視窗物件,如按鈕、標籤等等。 語法 Frame() // 建立一個沒有標題的視窗

charis
Download Presentation

Event-Driver Intput

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Event-Driver Intput AWT(視窗物件)

  2. 大綱 • 視窗物件 • 事件Event • 練習

  3. 視窗物件 • 視窗物件 • AWT(Abstract Windowing Toolkit)類別 • 用來處理圖形(包含視窗與繪圖)最基本的方式,它可以用來建立Java的applet及視窗程式。 • 本章節以此AWT介紹

  4. AWT視窗物件 • 建立視窗 • Frame物件 • 可以當成是一個容器,用來容納其它視窗物件,如按鈕、標籤等等。 • 語法 • Frame() //建立一個沒有標題的視窗 • Frame(String title) //建立視窗,並以title為其標題 • 整體寫法 • 呼叫 import java.awt.*; • 宣告 static Frame greetDisplay; • 建立 greetDisplay=new Frame(“frame class”); • Method方法 • getState:設定視窗的狀態,Frame.Normal代表一般狀態,其值為0、Frame.ICONIFIED代表視窗為最小化,其值為1。 • getTitle()取得視窗的標題。

  5. 練習一 //建立視窗物件 import java.awt.*; public class test1 { static Frame frm=new Frame("Frame class"); public static void main(String agrs[]) { frm.setSize(200,150); //設定視窗大小為200*150 frm.setLocation(100,50); //設定視窗位置在(100,50) frm.setVisible(true); //設定視窗為可見 System.out.println("state="+frm.getState()); System.out.println("title="+frm.getTitle()); System.out.println("visible="+frm.isVisible()); } }

  6. 建立標籤 • Label物件 • Label是用來在視窗中顯示文字的文字方塊 • 語法 • Label() //建立一個沒有文字的標籤 • Label(String text) //建立標籤,並以text為標籤上的文字 • Label(String text, int align) //建立標籤,以text為標籤上的文字,並以align的方式對齊,其中align的值可為Label.LEFT、Label.RIGHT、Label.CENTER • 整體寫法 • 呼叫 import java.awt.*; • 宣告 private static Label myDataLabel; • 建立 myDataLabel=new Label(“Enter data here:”); 說明: 宣告一個Label類別的物件(myDataLabel),其中static修飾元表示該欄位是一個類別欄位,若無static修飾元,則為實體欄位。 說明: 在畫面上顯示”Enter data here”來當做提示字元 New用來取得一個類別的物件

  7. Method方法 • getAlignment()傳回標籤內文字方對齊方式。 • setAlignment(int align)設定標籤內文字的對齊方式。 • getText()傳回標籤內的文字。 • setText(String text)設定籤內的文字為text

  8. 練習二 //指定標籤物件的大小 import java.awt.*; public class test2 { static Frame frm=new Frame("Label class"); static Label lab=new Label(); public static void main(String agrs[]) { frm.setLayout(null); //取消版面配置 frm.setSize(200,150); //設定視窗大小為200*150 frm.setBackground(Color.pink); lab.setText("Hello Java"); lab.setAlignment(Label.CENTER); lab.setForeground(Color.blue); lab.setLocation(60,50); //設定標籤位置 lab.setSize(120,20); //設定標籤大小 lab.setFont(new Font("Serief",Font.ITALIC+Font.BOLD,18)); frm.add(lab); frm.setVisible(true); }}

  9. 建立文字欄 • TextField物件 • TextField是讓使用者輸入資料的視窗元件 • 整體寫法 • 呼叫 import java.awt.*; • 宣告 private static TextField myDF; • 建立 myDF=new TextField(“Replace me”,10); • Method方法 • getEchoChar()取得文字方塊的回應字元。 • setEchoChar(char c)設定文字方塊的回應字元為c,通常使用在password上。 • setText(String text)設定文字方塊的文字為text。 說明:宣告一個TextField類別的物件(myDFl),其中static修飾元表示該欄位是一個類別欄位,若無static修飾元,則為實體欄位。 說明:”Replace me”為提示字元,會顯示在文字欄中。 new用來取得一個類別的物件或為TextField類別建一個新的但未初始化的實體。

  10. 建立按鈕 • Button物件 • Button是用來處理按鈕物件的相關事宜 • 語法 • Button() //建立一個沒有標題的按鈕 • Button(String title) //建立標題為title的按鈕 • 整體寫法 • 呼叫 import java.awt.*; • 宣告 Button myB; • 建立 myB=new Button(“Done”); • Method方法 • getLabel傳回按鈕的標題。 • setLabel(String title)設定按鈕的標題為title。

  11. 事件 • 事件是由事件來源所產生的,我們可以針對事件本身來登錄監聽器(Listener)以監聽事件的發生,這種方式可以讓程式設計師來指派負責處理事件的對象。 • Java的事件處理是採取「委派事件模式(delegation event model)」。 • 委派事件模式:當事件發生時,產生事件的物件(事件的來源者event source,如按鈕),會把此一「訊息」轉給事件監聽者(event listener)處理的一種方式。 • WindowListener:監聽器(Listener)介面 • WindowAdapter:轉接器(Adapter)類別 • windowClosing():方法

  12. AWT的物件可能產生事件的對應關係表

  13. 撰寫listener class Private static class MyListener implements ActionListener { Public void actionPerformed(ActionEvent event) { ……. } } 說明: actionPerformed方法:當使用者按一下按鈕,則會執行{…}內的敘述。 implements ActionListener:表示MyListener開始啟動 MyListener:類別名稱

  14. ②按下按鈕,btn會產生一個事件物件 ①frm先向按鈕btn註冊 按鈕btn (event source) 事件傾聽者frm (event listener) ③將事件物件傳遞給frm ④指派給事件處理者 事件處理者 public void actionPerformed(ActionEvent e) { Frm.setBackground(Color.yellow); }

  15. 宣告MyListener listener; • 建立 listener=new MyListener(); • 根據按鈕登錄監視器以監視事件發生 btn.addActionListener(listener); 說明: 宣告一個MyListener類別物件(listener)。 說明: new用來取得一個類別的物件或為MyListener類別建一個新的但未初始化的實體。

  16. Click Me 練習三 //按鈕+事件處理 import java.awt.*; import java.awt.event.*; public class test3 extends Frame implements ActionListener //設test3 class繼承自Frame //將 test3 class實作成ActionListener介面 { static test3 frm=new test3(); //建立test3 class的物件frm static Button btn=new Button("Click Me"); public static void main(String args[]) { btn.addActionListener(frm); //把frm(傾聽者)向btn(事件來源者)註冊 frm.setLayout(new FlowLayout()); frm.setTitle("Action Event"); frm.setSize(200,150); frm.add(btn); frm.setVisible(true); } public void actionPerformed(ActionEvent e) //事件發生的處理動作 { frm.setBackground(Color.yellow); }}

More Related