1. 程式人生 > >黑馬程式設計師 java基礎24天 GUI程式設計學習總結

黑馬程式設計師 java基礎24天 GUI程式設計學習總結

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ---------------------

一.圖形使用者介面

GUI:Graphical  User Interface(圖形使用者介面)

CLI:Command line User Interface(命令列使用者介面)

Java為GUI提供的物件都存愛java.awt和java.Swing兩個包中

    圖形化的介面,是為了更加直觀的提供服務,其內部程式碼的書寫,跟之前的程式碼書寫沒有什麼太大的區別。

二.Awt和Swing

java.Awt:

Abstract Window ToolKit(抽象視窗工具包)

需要呼叫本地系統方法實現功能,屬於重量級控制元件

javax.Swing;

在AWT的基礎上,建立了一套圖形介面系統,其中提供的更多的控制元件,而且完全由java編寫,增強了移植性,屬於輕量級控制元件

【注意:目前學習的GUI程式設計,使用的是Awt工具包】

三.繼承關係圖

Component(元件)【抽象類】

  |--Container(容器)

       |--Panel(面板)

              |--Window(視窗)

                   |--Frame(框架)

                      |--Dialog(對話方塊)

                           |--FileDialog

  |--Button

  |--Label

  |--Checkbox

  |--TextComponent

        |--TextField

        |--TextArea

Container:為一個容器,以一個比較特殊的元件,該元件可以通過add方法向其中新增元件

只有Container可是新增元件,其實是內部封裝了一個集合,如按鈕就是一定物件

 【建立的窗體,其實是程式中另外的執行緒在執行】

子類建立物件

四.佈局管理器

容器中元件的排放方式,就是佈局

常見的佈局管理其:

FlowLayout(流式佈局管理器)

          從左到右的順序排列

                 Panel預設的佈局管理器

BorderLayout(邊界佈局管理器)

          東、南、西、北、中

                 Frame預設的佈局管理器

GridLayout(網格佈局管理器)

          規則的矩陣

CardLayout(卡片佈局管理器)

          選項卡

GridBagLayout(網格包佈局管理器)

          非規則的矩陣

五.建立一個圖形化介面過程

1.常見一個窗體物件

Frame f  = new Frame(Stringtitle);

2.設定這個窗體的大小

setSize(int x,int y)   

3.設定這個窗體的位置

setLocetion (int x,int y)

同時設定2,3:setBouds(inta,int b ,int c,int d)

4.設定窗體的佈局

   f.setFlayOut(new FlowLayout())

5.新增控制元件

   f.add(元件)

6.將窗體設定為可見

    f.setVisible(true)

見程式碼例項

六.事件監聽機制組成

事件源:(元件)

事件:(Event)

監聽器:(Listener)

事件處理:(引發事件處理方式)

事件源:就是awt包或者swing包中的那些圖形介面元件

事件:每一個事件源都有自己特有的對應事件和共性事件

監聽器:將可以觸發某事件的動作都已經封裝到了監聽其中

以上三者,在java中都已經定義好了

直接獲取物件來用就可以了

我們要做的事情是:就是對響聲的動作進行處理

七.事件監聽機制流程

  首先,應該先將監聽器(也就是監聽引發事件的動作(有的話就呼叫相應的處理方式))

  然後,當有外部動作時,當有監聽器所監聽的動作作用於事件源上時,監聽器就將相應的

      事件物件傳遞給事件處理方式來處理

八.滑鼠鍵盤事件和介面卡的產生過程

【確定事件源,確定事件,確定監聽器,確定要要操作什麼】

要給frame窗體新增滑鼠鍵盤事件,則需要使用其父類Window的方法

addWindowListener(),並向其中傳遞一個WindowListener,而該類中的事件處理方法又是不確定的,所以就將這個類定義為一個抽象類。

而其中的包含的事件處理方法,也都必須是抽象的,當我們new一個WindowListener的子類物件的時候,就必須複寫其所有的抽象方法。

但是,我們常常只是處理該事件源的部分事件,但每次繫結監聽的時候卻總是要複寫其他的事件處理方法,這是相當繁瑣的。正是因為這樣介面卡就出現了。

介面卡是一種抽象類,但是其中卻沒有抽象方法,它繼承自事件監聽類。比如,WindowAdapter繼承自WindoListener抽象類。然後我們new  WindowAdapter的子類物件,採用匿名內部類,複寫我們要監聽的事件的處理方式,這樣就簡化了書寫。

介面卡定義為抽象類,這樣就不可以建立物件了,因為建立類也沒有意義,因為給類中的方法都是空的。那就乾脆不然建立了。

介面卡的出現是因為監聽器監聽事件很多,當一個監聽器的監聽事件不超過三個時,就不需要監聽器了。

一般繫結監聽器的格式為:

事件源.addXxxListener(newXxxAdapter(){

     publicvoid 事件名(XxxEvente)

});

(1)窗體監聽器

addWindowListener—>new WindowAdapter()—>WindowEvente

(2)活動監聽(即可以鍵盤觸發,又可以滑鼠觸發)

addActionListener-->newActionListener()-->public void actionPerformed(ActionEvent e)

【該監聽器沒有介面卡】

(3)滑鼠監聽

addMouseListener-->new MouseAdapter()-->MouseEvente

(4)鍵盤監聽

addKeyListener-->new KeyAdapter()-->KeyEvente

程式碼示例:

import java.awt.*;

import java.awt.event.*;

class AwtDemo

{

       publicstatic void main(String[] args)

       {

              Framef = new Frame("my frame");

       f.setSize(500,400);//設定長和寬

              f.setLocation(300,200);//設定窗體在螢幕上的位置

              f.setLayout(newFlowLayout());//設定窗體佈局

              //新增一個按鈕

              Buttonb = new Button("我是一個按鈕");

              //新增到窗體中

              f.add(b);

              f.addWindowListener(newWindowAdapter()

              {

                     publicvoid windowClosing(WindowEvent e)

                     {

                System.out.println("我關");

                System.exit(0);

                  }

                     publicvoid windowActivated(WindowEvent e)

                     {

                            System.out.println("我活了");

                     }

              });//繫結監聽器

       f.setVisible(true);//設定窗體可見

        }

}

九.共性事件(滑鼠鍵盤事件):找component

例如:

Void   addMouseListener(MouseListener l)

         新增指定的滑鼠偵聽器,以接收發自此元件的滑鼠事件。

Void   addKeyListener(KeyListener l)

         新增指定的按鍵偵聽器,以接收發自此元件的按鍵事件。

介面卡:        

KeyAdapter()的常用方法

方法摘要

 Void    keyPressed(KeyEvent e)

         按下某個鍵時呼叫此方法。

 void   keyReleased(KeyEvent e)

         釋放某個鍵時呼叫此方法。

 Void    keyTyped(KeyEvent e)

         鍵入某個鍵時呼叫此方法。

KeyEvent中常見方法

char getKeyChar()

         返回與此事件中的鍵關聯的字元。

 intgetKeyCode()

         返回與此事件中的鍵關聯的整數keyCode

java.awt.event.InputEvent中的常見方法

boolean   isAltDown()

           返回 Alt 修飾符在此事件上是否為 down。

 boolean  isAltGraphDown()

           返回 AltGraph 修飾符在此事件上是否為 down。

 Boolean  isConsumed()

           返回是否已經使用此事件。

 boolean   isControlDown()

           返回 Control 修飾符在此事件上是為 down。

 boolean   isMetaDown()

           返回 Meta 修飾符在此事件上是否為 down。

 boolean   isShiftDown()

           返回 Shift 修飾符在此事件上是否為 down。

十.選單

MenuBar 選單條     Menu 選單項    MenuItem  子選單

選單條中可以新增子選單,選單項;選單項中可以新增選單項,子選單

選單條需要新增在一個容器中

程式碼示例:

f = new Frame("My Text");

              mb = newMenuBar();

              m = newMenu("檔案");

              m1 = newMenu("資源");

              saveFileItem =new MenuItem("儲存");

              closeItem = newMenuItem("關閉");

              openItem = newMenuItem("開啟")

mb.add(m);

              m.add(m1);

              m.add(saveFileItem);

              m.add(closeItem);

              m1.add(openItem);

    f.setMenuBar(mb);//新增

十一.Dailog和FileDailog的建立

(1)Dialog dia = new Dialog(f,"錯誤提示",true);

常見Dialog物件,向建構函式中傳遞三個引數:f表示屬於那個窗體,“錯誤提示”表示該對話方塊的標題,true指定在顯示的時候是否阻止使用者將內容輸入到其他頂級視窗中,設定為true則表示阻止。

可以通過setVisible(boolean b)來設定其是否可見

(2)FileDialog  fd = new FileDialog(f,"開啟檔案",FileDialog.LOAD);

     FileDialog  fd1 = new FileDialog(f,"儲存檔案",FileDialog.SAVE);

FileDialog有兩個主要功能,一個是開啟檔案,一個是儲存檔案。我們可以在建立時就設定值為FileDialog.LOAD,FileDialog.SAVE

主要方法:

void    setVisible(boolean b)

         根據引數 b 的值顯示或隱藏此 Dialog。

void    setMode(int mode)

         設定檔案對話方塊的模式。

String  getDirectory()

         獲取此檔案對話方塊的目錄。

String  getFile()

         獲取此檔案對話方塊的選定檔案。

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------詳細請檢視:www.itheima.com