JAVA應(yīng)用程序設(shè)計(jì)7_第1頁
JAVA應(yīng)用程序設(shè)計(jì)7_第2頁
JAVA應(yīng)用程序設(shè)計(jì)7_第3頁
JAVA應(yīng)用程序設(shè)計(jì)7_第4頁
JAVA應(yīng)用程序設(shè)計(jì)7_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第7章圖形界面學(xué)習(xí)目標(biāo)了解AWT與Swing的關(guān)系掌握組件、容器、布局管理器的概念了解Jframe等常見容器了解Jbutton、Jlabel等組件了解事件處理作用和實(shí)現(xiàn)機(jī)制一個系統(tǒng)中,良好的人機(jī)界面是非常重要的,Java中也可以完成像Windows一樣的操作界面。圖形用戶界面(GraphicalUserInterfaceGUI)編程主要有以下幾個特征:圖形界面對象及其框架圖形界面對象的布局圖形界面對象上的事件響應(yīng)Java的圖形界面開發(fā)中有兩種技術(shù):AWT和Swing。AWTAbstractWindowingToolkit抽象窗口工具包是Java提供的用來建立和設(shè)置Java的圖形用戶界面的基本工具。AWT中的所有工具類都保存在java.awt包中。AWT包中提供的所有工具類分為以下3種組件:Component容器:Container布局管理器:LayoutManager在java.awt包中所提供的組件類很多,主要有以下幾大類Java程序中,所有類的根類是java.lang.ObjectJava.lang由編譯器自動導(dǎo)入,無需使用import導(dǎo)入,而其他包則需要在程序之前說明組件圖形界面中,用戶經(jīng)常會看到一個個的按鈕、標(biāo)簽、菜單等,這些實(shí)際上就是一個個的組件。在整個AWT包中,所有的組件類都是從Component和MenuComponent擴(kuò)展而來的,這些類會繼承這兩個類的公共操作。容器所有的AWT組件都應(yīng)該放到容器中,并可以設(shè)置其位置、大小等,所有的容器都是Component的子類。布局管理器使用布局管理器可以使用容器的組件按照指定的位置進(jìn)行擺放,即使容器改變了大小,布局管理器也可以準(zhǔn)確地把組件放到指定的位置,這樣可以有效地保證版面不會混亂。在AWT中所有的布局管理器都是LayoutManager的子類。SwingAWT大量引入了Windows函數(shù),所以被稱為重量級組件。在Java2中提供了輕量級的圖形界面組件——Swing,它使用Java語言實(shí)現(xiàn),是以AWT平臺為基礎(chǔ)構(gòu)建起來的新組件,直接使用Swing可以更輕松地構(gòu)建用戶界面。Java中所有Swing都保存在javax.swing包中。Javax是一個擴(kuò)展包,所有的組件是從Jcomponent擴(kuò)展出來的。Jcomponent類幾乎是所有Swing組件的公共父類,所以Jcomponent的所有子類也都繼承了父類的全部公共操作。所有的Swing組件只是比AWT組件多增加了”J”基本容器JFrame如果要創(chuàng)建一個窗口,直接使用Jframe類即可,此類是Component的子類。例:JFrameDemo01.java此窗體的標(biāo)題是在實(shí)例化Jframe時設(shè)置的標(biāo)題,底色為白色,通過setSize方法設(shè)置了顯示的大小。setVisible(true)非常重要,沒有這句話,窗體為隱藏的,不能顯示。使用java.awt.Color類實(shí)現(xiàn)背景色的設(shè)置。在Jframe中也可以使用Dimension類設(shè)置窗體大小,此類主要用于封裝組件顯示的寬度和高度。對于組件的顯示位置也可使用Point類,此類封裝的顯示位置的X、Y坐標(biāo)。例:JFrameDemo02.java該程序的運(yùn)行結(jié)果與之前的完全一樣。標(biāo)簽:JLabelJlabel組件用于顯示信息,一般情況下是不能直接更改其內(nèi)容的。創(chuàng)建完的Label對象可以通過Container類中的add方法加入到容器中。例:JLabelDemo01.java該程序?qū)嵗艘粋€Jlabel對象,并制定內(nèi)容以及對齊方式,之后將此組件加入到容器中并顯示。使用setFont方法可以更改標(biāo)簽的字體和顏色,java.awt.Font類用來表示字體。例:JLabelDemo02.java按鈕:JButtonJbutton組件表示一個普通的按鈕。例:JButtonDemo01.javaJbutton與Jlabel使用起來沒有任何區(qū)別。Jbutton也可以為一個按鈕設(shè)置一張圖片例:JButtonDemo02.java布局管理器Java中專門提供了布局管理器來管理組件。通過布局管理器可以使用不同方式排列組件。每當(dāng)需要重新調(diào)整屏幕大小或重新繪制屏幕上任一項(xiàng)時,都要用到布局管理器。Swing中使用的布局管理器主要有以下幾類:FlowLayoutBorderLayoutGridLayoutCardLayout絕對定位FlowLayout:流式布局管理,使用此布局方式會使所有的組件像流水一樣依次進(jìn)行排列。例:FlowLayoutDemo01.java所有組件按照順序依次向下排列。BorderLayout:將窗體的版面劃分成東南西北中5個區(qū)域,將需要的組件直接放到這5個區(qū)域。例:BorderLayoutDemo01.javaGridLayout:以表格的形式進(jìn)行管理,在使用此布局管理器時必須設(shè)置顯示的行數(shù)和列數(shù)。例:GridLayoutDemo01.javaCardLayout:將一組組件彼此重疊的進(jìn)行布局,就像一張張卡片一樣,這樣每次只會展現(xiàn)一個界面。例:CardLayoutDemo01.java絕對定位:如果不想再窗體中指定布局管理器,可以使用絕對位置坐標(biāo)方式。在Component中提供了setBounds方法,定位一個組件的坐標(biāo),使用X、Y坐標(biāo)表示位置。例:AbsoluteLayoutDemo01.java單行文本輸入:JTextField如果要實(shí)現(xiàn)一個單行的輸入文本,可以使用JTextField組件。例:JTextDemo01.java該程序使用了GridLayout的布局方式。第一個文本框是可編輯的,第二個為不可編輯。setColumns方法設(shè)置顯示的行數(shù)并沒有任何改變,因?yàn)镚ridLayout在使用時會忽略這些設(shè)置值,讓每一個格子都具有相同的大小,如果要解決這個問題,可以使用絕對定位的方法進(jìn)行。例:JTextDemo02.java事件處理圖形界面制作完成只是完成了程序開發(fā)的起步工作,要想讓每一個組件都發(fā)揮自己的作用,就必須對所有的組件進(jìn)行事件處理。事件和監(jiān)聽器事件:表示一個對象的發(fā)生狀態(tài)變化。如果要想處理事件,就需要事件的監(jiān)聽者不斷監(jiān)聽事件的變化,并根據(jù)事件進(jìn)行相應(yīng)的處理。在Swing編程中,使用了最早AWT的事件處理方式,所有的事件類都是EventObject類的子類。通過getSource方法取得發(fā)生事件的源對象。如果沒有能夠接收和處理事件的對象,圖形界面程序所生成的一切事件都是無用的,這些事件接收對象被稱為事件監(jiān)聽器。所有的事件監(jiān)聽器都是以監(jiān)聽接口的形式出現(xiàn)的,處理時只需要實(shí)現(xiàn)此接口即可。事件處理流程如下窗體事件WindowListener是專門處理窗體的事件監(jiān)聽接口,一個窗體的所有變化,如窗口的打開、關(guān)閉等都可以使用這個接口進(jìn)行監(jiān)聽。例:MyEventWindowEventJFrame01.java需要覆寫WindowListener接口的所有方法。只有一個監(jiān)聽器是不夠的,還需要在組件使用時注冊監(jiān)聽,這樣才可以處理,直接使用窗體的addWindowListener方法即可注冊事件監(jiān)聽。監(jiān)聽適配器為了不覆寫不必要的方法,在事件處理中提供了很多的Adapter(適配器)類,方便用戶進(jìn)行事件處理的實(shí)現(xiàn)。以WindowAdapter為例,用戶只要繼承了此類,就可以根據(jù)自己的需要覆寫方法。在開發(fā)中是較為常見的做法。例:MyEventWindowEventJFrame02.java如果此監(jiān)聽處理只需操作一次,就沒有必要將其設(shè)置為一個單獨(dú)的類,可以使用匿名內(nèi)部類直接完成監(jiān)聽操作。例:MyEventWindowEventJFrame03.java動作事件及監(jiān)聽處理要想讓一個按鈕變得有意義,就必須使用事件處理。在Swing的事件處理中,可以使用ActionListener接口處理按鈕的動作事件。ActionListener接口只定義了一個方法。voidactionPerformed(ActionEvente)發(fā)生操作時調(diào)用例:MyActionEventDemo01.java由于動作事件有可能有很多事件源,所以為了保險(xiǎn),在操作之間添加了驗(yàn)證語句if(e.getSource()==but)例:簡單的用戶登錄程序MyActionEventDemo02.java當(dāng)單擊按鈕時會觸發(fā)ActionEvent事件,并判斷發(fā)生此事件的是哪個按鈕。注意程序的分層。該程序中有專門負(fù)責(zé)業(yè)務(wù)處理的LoginCheck類,也有完成界面顯示的MyActionEventDemo02類,可以很好的達(dá)到顯示和業(yè)務(wù)的分離。在Swing的事件處理中也可以對鍵盤的操作進(jìn)行監(jiān)聽,直接使用KeyListener接口。主要方法voidkeyPressed(KeyEvente)按下某個鍵時調(diào)用此方法。voidkeyReleased(KeyEvente)釋放某個鍵時調(diào)用此方法。voidkeyTyped(KeyEvente)鍵入某個鍵時調(diào)用此方法。鍵盤事件及監(jiān)聽處理如果取得鍵盤輸入的內(nèi)容,可以通過KeyEvent取得。chargetKeyChar()

返回與此事件中的鍵關(guān)聯(lián)的字符。intgetKeyCode()

返回與此事件中的鍵關(guān)聯(lián)的整數(shù)keyCode。staticString

getKeyText(intkeyCode)

返回描述keyCode的String,如"HOME"、"F1"或"A“。例:MyKeyEventDemo01.java在鍵盤監(jiān)聽中,也可以使用KeyAdapter適配器完成鍵盤事件的監(jiān)聽。例:MyKeyEventDemo02.java鼠標(biāo)事件及監(jiān)聽處理對鼠標(biāo)操作進(jìn)行監(jiān)聽,如鼠標(biāo)按下、松開等,可以使用MouseListener接口。voidmouseClicked(MouseEvente)

鼠標(biāo)按鍵在組件上單擊(按下并釋放)時調(diào)用。

voidmouseEntered(MouseEvente)

鼠標(biāo)進(jìn)入到組件上時調(diào)用。

voidmouseExited(MouseEvente)

鼠標(biāo)離開組件時調(diào)用。

voidmousePressed(MouseEvente)

鼠標(biāo)按鍵在組件上按下時調(diào)用。

voidmouseReleased(Mou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論