Java編程中運用的GUI設計基本。本站提示廣大學習愛好者:(Java編程中運用的GUI設計基本)文章只能為提供參考,不一定能成為您想要的結果。以下是Java編程中運用的GUI設計基本正文
起初法式應用最簡略的輸出輸入方法,用戶在鍵盤輸出數據,法式將信息輸入在屏幕上。古代法式請求應用圖形用戶界面(Graphical User Interface,GUI),界面中有菜單、按鈕等,用戶經由過程鼠標選擇菜單中的選項和點擊按鈕,敕令法式功效模塊。本章進修若何用Java說話編寫GUI迷信實驗,若何經由過程GUI完成輸出和輸入。
AWT和Swing
先前用Java編寫GUI法式,是應用籠統窗口對象包AWT(Abstract Window Toolkit).如今多用Swing。Swing可以看做是AWT的改進版,而不是取代AWT,是對AWT的進步和擴大。所以,在寫GUI法式時,Swing和AWT都要感化。它們共存於Java基本類(Java Foundation Class,JFC)中。
雖然AWT和Swing都供給了結構圖形界面元素的類,但它們的主要方面有所分歧:AWT依附於主平台繪制用戶界面組件;而Swing有本身的機制,在主平台供給的窗口中繪制和治理界面組件。Swing與AWT之間的最顯著的差別是界面組件的外不雅,AWT在分歧平台上運轉雷同的法式,界面的外不雅和作風能夠會有一些差別。但是,一個基於Swing的運用法式能夠在任何平台上都邑有雷同的外不雅和作風。
Swing中的類是從AWT繼續的,有些Swing類直接擴大AWT中對應的類。例如,JApplet、JDialog、JFrame和JWindow。
應用Swing設計圖形界面,重要引入兩個包:
因為Swing太豐碩,弗成能在一本教科書中給出Swing的周全引見,但本章所引見的有關Swing的常識,已足以讓讀者編寫相當精巧的GUI法式。
組件和容器
組件(component)是圖形界面的根本元素,用戶可以直接操作,例如按鈕。容器(Container)是圖形界面的的復合元素,容器可以包括組件,例如面板。
Java說話為每種組件都預界說類,法式經由過程它們或它們的子類各類組件對象,如,Swing中預界說的按鈕類JButton是一品種,法式創立的JButton對象,或JButton子類的對象就是按鈕。Java說話也為每種容器預界說類,法式經由過程它們或它們的子類創立各類容器對象。例如,Swing中預界說的窗口類JFrame是一種容器類,法式創立的JFrame或JFrame子類的對象就是窗口。
為了同一治理組件和容器,為一切組件類界說超類,把組件的共有操作都界說在Component類中。異樣,為一切容器類界說超類Container類,把容器的共有操作都界說在Container類中。例如,Container類中界說了add()辦法,年夜多半容器都可以用add()辦法向容器添加組件。
Component、Container和Graphics類是AWT庫中的症結類。為能條理地結構龐雜的圖形界面,容器被看成特別的組件,可以把容器放入另外一個容器中。例如,把若干按鈕和文本框分放在兩個面板中,再把這兩個面板和另外一些按鈕放入窗口中。這類條理地結構界面的辦法,能以增量的方法結構龐雜的用戶界面。
事宜驅動法式設計基本
1.事宜、監督器和監督器注冊
圖形界面上的事宜是指在某個組件上產生用戶操作。例如,用戶單擊了界面上的某個按鈕,就說在這個按鈕上產生了事宜,這個按鈕對象就是事宜的擊發者。對事宜作監督的對象稱為監督器,監督器供給呼應事宜的處置辦法。為了讓監督器與事宜對象聯系關系起來,須要對事宜對象作監督器注冊,告知體系事宜對象的監督器。
以法式呼應按鈕事宜為例,法式要創立按鈕對象,把它添加到界面中,要為按鈕作監督器注冊,法式要有呼應按鈕事宜的辦法。當“單擊按鈕”事宜產生時,體系就挪用已為這個按鈕注冊的事宜處置辦法,完成處置按鈕事宜的任務。
2.完成事宜處置的途征
java說話編寫事宜處置法式重要有兩種計劃:一個是法式重設handleEvent(Eventevt),采取這個計劃的法式任務量稍年夜一些;另外一個計劃是法式完成一些體系設定的接口。java按事宜類型供給多種接口,作為監督器對象的類須要完成響應的接口,即完成呼應事宜的辦法。當事宜產生時,體系內設的handleEvent(Event evt)辦法就主動挪用監督器的類完成的呼應事宜的辦法。
java.awt.event包頂用來檢測並對事宜做出反響的模子包含以下三個構成元素:
源對象:事宜“產生”這個組件上,它與一組“偵聽”該事宜的對象堅持著接洽。
監督器對象:一個完成預界說的接口的類的一個對象,該對象的類要供給對產生的事宜作處置的辦法。
事宜對象:它包括描寫當事宜產生時從源傳遞給監督器的特定事宜的信息。
一個事宜驅動法式要做的任務除創立源對象和監督器對象以外,還必需支配監督器懂得源對象,或向源對象注冊監督器。每一個源對象有一個已注冊的監督器列表,供給一個辦法能向該列表添加監督器對象。只要在源對象注冊了監督器以後,體系才會將源對象上產生的事宜告訴監督器對象。
3.事宜類型和監督器接口
在java說話中,為了便於體系治理事宜,也為了便於法式作監督器注冊,體系將事宜分類,稱為事宜類型。體系為每一個事宜類型供給一個接口。要作為監督器對象的類必需完成響應的接口,供給接口劃定的呼應事宜的辦法。
再以法式呼應按鈕事宜為例,JButton類對象button可所以一個事宜的激起者。當用戶點擊界面中與button對應的按鈕時,button對象就會發生一個ActionEvent類型的事宜。假如監督器對象是obj,對象obj的類是Obj,則類Obj必需完成AWT中的ActionListener接口,完成監督按鈕事宜的actionPerformed辦法。button對象必需用addActionListener辦法注冊它的監督器obj。
法式運轉時,當用戶點擊button對象對應的按鈕時,體系就將一個ActionEvent對象從事宜激起對象傳遞到監督器。ActionEvent對象包括的信息包含事宜產生在哪個按鈕,和有關該事宜的其他信息。
下表給出有必定代表性的事宜類型和發生這些事宜的部門Swing組件。現實事宜產生時,平日會發生一系列的事宜,例如,用戶點擊按鈕,會發生ChangeEvent事宜提醒光標到了按鈕上,接著又是一個ChangeEvent事宜表現鼠標被按下,然後是ActionEvent事宜表現鼠標已松開,但光標照舊在按鈕上,最初是ChangeEvent事宜,表現光標已分開按鈕。然則運用法式平日只處置按下按鈕的完全舉措的單個ActionEvent事宜。
每一個事宜類型都有一個響應的監督器接口,表11-2列出了每一個接口的辦法。完成監督器接口的類必需完成一切界說在接口中的辦法。