Java圖形用戶界面編程


GUI代表圖形用戶界面(Graphical User Interface),Java API中提供了兩套組件用戶支持編寫圖形用戶界面,包括AWT和Swing。

AWT使用本地操作系統的代碼資源,被稱為重量級組件。

Swing建立在AWT提供的基礎之上,同時使用AWT相同的事件處理機制。Swing組件是輕量級的GUI組件,完全有純Java代碼編寫,不依賴於任何特定平台,采用MVC架構方式來設計組件類。它將表示層分為三個分離的部分,分別是模型(model)、視圖(view)、控制器(controler)。模型存儲定義組件的數據,視圖從模型中的數據創建組件的可視化表示,控制器處理用戶與組件的交互操作,並在必要時更改模型或視圖以響應用戶行為。

開發Swing時因為視圖和控制器存在很強的依賴關系,於是將視圖和控制器組合稱為UI委托的帶個邏輯實體,所以Swing方法也被稱為模型-委托架構或分離模型架構。

 

容器和組件

 

    容器是用來放置其它組件特殊類型的組件;組件是獨立的可視化控件。一個組件要顯示出來就必須放置在一個容器內,容器也是組件,容器也可以放置其它容器。

    

    容器分為重量級容器和輕量級容器。

    重量級容器:

        包括JFrame(窗體)、JDialog(對話框)、JWindow(窗口)、JApplet(小程序)。因為都繼承AWT的Container,所以被成為重量級容器。每個程序至少要有一個重量級容器才可以提供圖形化用戶界面。

      每個包含層次必須從重量級容器開始,重量級容器不能包含在其它任何容器中。我們所接觸到的是層次面板(分為內容面板和可選的菜單欄),Swing的組件都放在內容面板中。

    輕量級容器:

        包括常用的面板Jpanel、分隔窗格、滾動窗格、標簽窗格、工具條,它們和普通的組件一樣繼承自Swing類的JComponent,故成為輕量級容器。它們的存在主要是為了定位其它組件。

    

 

    組件:

      按鈕(類JButton)、單選按鈕(類JRadioButton)、復選框(類JCheckBox)、組合框(類JComboBox)、列表框(類JList)、文本字段(類JTextField)、純文本區域(類JTextArea)等  都繼承自Swing類的JComponent。

 

組件在容器中的布局:

      組件要想在程序中顯示就必須添加到容器中,組件在容器中的排列的形式根據是否使用布局管理器,以及使用何種類型的布局管理器來決定。

      如果需要將組件在容器中精確定位,就必須使用容器的setLayout(null)方法,然后調用組件的setBounds()方法設置組件的邊界。

組件采用精確定位后不支持窗口的改變。

 

      AWT和Swing API 內置布局管理器

          流式布局管理器FlowLayout(JPanel組件默認采用FlowLayout布局管理器):

              安裝組件添加順序從左到右排列,可以控制容器組件居中、居左、居右,可以控制組件的垂直和水平間距。

          BorderLayout管理器(不是用來放置組件的,常用於放置中間容器):

              分為南北中東西五個區域,其中中間的面積和權力最大。

              Jframe默認的管理器。

              

事件驅動編程

        根據事件發生而執行代碼的編程方式稱為事件驅動編程。

        例子:通過點擊一個按鈕觸發一個事件,按鈕是該事件的事件源,將監聽對象注冊到按鈕上,當一個動作事件發生在按鈕上時,按鈕通過調用定義的監聽器的actionPerformed()方法來探知監聽器。

        

      事件和事件源

          運行Java GUI程序時,程序負責與用戶交互,而事件則驅動程序的執行。事件用於描述發生了什么事情,可以由外部用戶的行為觸發,例如鼠標移動、按鈕點擊、鍵入字符等,也可以由程序的內部活動觸發,例如數據模型發生變化,程序可以選擇響應或者忽略事件。

          生成一個事件並觸發它的組件成為事件源。一個事件是一個事件類的實例對象,事件類的根對象是java.util.EventObject。

      事件監聽器、注冊和處理事件

          事件源觸發一個事件但是事件源本事不處理,而是委托給對該 事件有興趣的對象來處理。這個被委托來處理事件的對象,被稱為事件監聽器。

        

        成為事件源上的一個事件監聽器的方法:

            1.創建一個監聽器對象   監聽器對象必須是對應的事件監聽器接口的實例。Java為每種事件類型都提供了監聽器接口。

            2.將監聽器對象注冊到事件源上。

 

 

 

 

        

 

 

              

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM