




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章圖形界面學習目標了解AWT與Swing的關系掌握組件、容器、布局管理器的概念了解Jframe等常見容器了解Jbutton、Jlabel等組件了解事件處理作用和實現機制一個系統中,良好的人機界面是非常重要的,Java中也可以完成像Windows一樣的操作界面。圖形用戶界面(GraphicalUserInterfaceGUI)編程主要有以下幾個特征:圖形界面對象及其框架圖形界面對象的布局圖形界面對象上的事件響應Java的圖形界面開發中有兩種技術:AWT和Swing。AWTAbstractWindowingToolkit抽象窗口工具包是Java提供的用來建立和設置Java的圖形用戶界面的基本工具。AWT中的所有工具類都保存在java.awt包中。AWT包中提供的所有工具類分為以下3種組件:Component容器:Container布局管理器:LayoutManager在java.awt包中所提供的組件類很多,主要有以下幾大類Java程序中,所有類的根類是java.lang.ObjectJava.lang由編譯器自動導入,無需使用import導入,而其他包則需要在程序之前說明組件圖形界面中,用戶經常會看到一個個的按鈕、標簽、菜單等,這些實際上就是一個個的組件。在整個AWT包中,所有的組件類都是從Component和MenuComponent擴展而來的,這些類會繼承這兩個類的公共操作。容器所有的AWT組件都應該放到容器中,并可以設置其位置、大小等,所有的容器都是Component的子類。布局管理器使用布局管理器可以使用容器的組件按照指定的位置進行擺放,即使容器改變了大小,布局管理器也可以準確地把組件放到指定的位置,這樣可以有效地保證版面不會混亂。在AWT中所有的布局管理器都是LayoutManager的子類。SwingAWT大量引入了Windows函數,所以被稱為重量級組件。在Java2中提供了輕量級的圖形界面組件——Swing,它使用Java語言實現,是以AWT平臺為基礎構建起來的新組件,直接使用Swing可以更輕松地構建用戶界面。Java中所有Swing都保存在javax.swing包中。Javax是一個擴展包,所有的組件是從Jcomponent擴展出來的。Jcomponent類幾乎是所有Swing組件的公共父類,所以Jcomponent的所有子類也都繼承了父類的全部公共操作。所有的Swing組件只是比AWT組件多增加了”J”基本容器JFrame如果要創建一個窗口,直接使用Jframe類即可,此類是Component的子類。例:JFrameDemo01.java此窗體的標題是在實例化Jframe時設置的標題,底色為白色,通過setSize方法設置了顯示的大小。setVisible(true)非常重要,沒有這句話,窗體為隱藏的,不能顯示。使用java.awt.Color類實現背景色的設置。在Jframe中也可以使用Dimension類設置窗體大小,此類主要用于封裝組件顯示的寬度和高度。對于組件的顯示位置也可使用Point類,此類封裝的顯示位置的X、Y坐標。例:JFrameDemo02.java該程序的運行結果與之前的完全一樣。標簽:JLabelJlabel組件用于顯示信息,一般情況下是不能直接更改其內容的。創建完的Label對象可以通過Container類中的add方法加入到容器中。例:JLabelDemo01.java該程序實例化了一個Jlabel對象,并制定內容以及對齊方式,之后將此組件加入到容器中并顯示。使用setFont方法可以更改標簽的字體和顏色,java.awt.Font類用來表示字體。例:JLabelDemo02.java按鈕:JButtonJbutton組件表示一個普通的按鈕。例:JButtonDemo01.javaJbutton與Jlabel使用起來沒有任何區別。Jbutton也可以為一個按鈕設置一張圖片例:JButtonDemo02.java布局管理器Java中專門提供了布局管理器來管理組件。通過布局管理器可以使用不同方式排列組件。每當需要重新調整屏幕大小或重新繪制屏幕上任一項時,都要用到布局管理器。Swing中使用的布局管理器主要有以下幾類:FlowLayoutBorderLayoutGridLayoutCardLayout絕對定位FlowLayout:流式布局管理,使用此布局方式會使所有的組件像流水一樣依次進行排列。例:FlowLayoutDemo01.java所有組件按照順序依次向下排列。BorderLayout:將窗體的版面劃分成東南西北中5個區域,將需要的組件直接放到這5個區域。例:BorderLayoutDemo01.javaGridLayout:以表格的形式進行管理,在使用此布局管理器時必須設置顯示的行數和列數。例:GridLayoutDemo01.javaCardLayout:將一組組件彼此重疊的進行布局,就像一張張卡片一樣,這樣每次只會展現一個界面。例:CardLayoutDemo01.java絕對定位:如果不想再窗體中指定布局管理器,可以使用絕對位置坐標方式。在Component中提供了setBounds方法,定位一個組件的坐標,使用X、Y坐標表示位置。例:AbsoluteLayoutDemo01.java單行文本輸入:JTextField如果要實現一個單行的輸入文本,可以使用JTextField組件。例:JTextDemo01.java該程序使用了GridLayout的布局方式。第一個文本框是可編輯的,第二個為不可編輯。setColumns方法設置顯示的行數并沒有任何改變,因為GridLayout在使用時會忽略這些設置值,讓每一個格子都具有相同的大小,如果要解決這個問題,可以使用絕對定位的方法進行。例:JTextDemo02.java事件處理圖形界面制作完成只是完成了程序開發的起步工作,要想讓每一個組件都發揮自己的作用,就必須對所有的組件進行事件處理。事件和監聽器事件:表示一個對象的發生狀態變化。如果要想處理事件,就需要事件的監聽者不斷監聽事件的變化,并根據事件進行相應的處理。在Swing編程中,使用了最早AWT的事件處理方式,所有的事件類都是EventObject類的子類。通過getSource方法取得發生事件的源對象。如果沒有能夠接收和處理事件的對象,圖形界面程序所生成的一切事件都是無用的,這些事件接收對象被稱為事件監聽器。所有的事件監聽器都是以監聽接口的形式出現的,處理時只需要實現此接口即可。事件處理流程如下窗體事件WindowListener是專門處理窗體的事件監聽接口,一個窗體的所有變化,如窗口的打開、關閉等都可以使用這個接口進行監聽。例:MyEventWindowEventJFrame01.java需要覆寫WindowListener接口的所有方法。只有一個監聽器是不夠的,還需要在組件使用時注冊監聽,這樣才可以處理,直接使用窗體的addWindowListener方法即可注冊事件監聽。監聽適配器為了不覆寫不必要的方法,在事件處理中提供了很多的Adapter(適配器)類,方便用戶進行事件處理的實現。以WindowAdapter為例,用戶只要繼承了此類,就可以根據自己的需要覆寫方法。在開發中是較為常見的做法。例:MyEventWindowEventJFrame02.java如果此監聽處理只需操作一次,就沒有必要將其設置為一個單獨的類,可以使用匿名內部類直接完成監聽操作。例:MyEventWindowEventJFrame03.java動作事件及監聽處理要想讓一個按鈕變得有意義,就必須使用事件處理。在Swing的事件處理中,可以使用ActionListener接口處理按鈕的動作事件。ActionListener接口只定義了一個方法。voidactionPerformed(ActionEvente)發生操作時調用例:MyActionEventDemo01.java由于動作事件有可能有很多事件源,所以為了保險,在操作之間添加了驗證語句if(e.getSource()==but)例:簡單的用戶登錄程序MyActionEventDemo02.java當單擊按鈕時會觸發ActionEvent事件,并判斷發生此事件的是哪個按鈕。注意程序的分層。該程序中有專門負責業務處理的LoginCheck類,也有完成界面顯示的MyActionEventDemo02類,可以很好的達到顯示和業務的分離。在Swing的事件處理中也可以對鍵盤的操作進行監聽,直接使用KeyListener接口。主要方法voidkeyPressed(KeyEvente)按下某個鍵時調用此方法。voidkeyReleased(KeyEvente)釋放某個鍵時調用此方法。voidkeyTyped(KeyEvente)鍵入某個鍵時調用此方法。鍵盤事件及監聽處理如果取得鍵盤輸入的內容,可以通過KeyEvent取得。chargetKeyChar()
返回與此事件中的鍵關聯的字符。intgetKeyCode()
返回與此事件中的鍵關聯的整數keyCode。staticString
getKeyText(intkeyCode)
返回描述keyCode的String,如"HOME"、"F1"或"A“。例:MyKeyEventDemo01.java在鍵盤監聽中,也可以使用KeyAdapter適配器完成鍵盤事件的監聽。例:MyKeyEventDemo02.java鼠標事件及監聽處理對鼠標操作進行監聽,如鼠標按下、松開等,可以使用MouseListener接口。voidmouseClicked(MouseEvente)
鼠標按鍵在組件上單擊(按下并釋放)時調用。
voidmouseEntered(MouseEvente)
鼠標進入到組件上時調用。
voidmouseExited(MouseEvente)
鼠標離開組件時調用。
voidmousePressed(MouseEvente)
鼠標按鍵在組件上按下時調用。
voidmouseReleased(Mou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農村畜牧業生產與疫情防控責任合同
- 固定支架租賃合同
- 石油化工行業生產安全規范指南
- 藥物治療基礎復習測試卷含答案
- 新能源汽車租憑合同協議書
- 3 《自己之歌》公開課一等獎創新教案統編版高中語文選擇性必修中冊
- 《世界經濟的全球化》戰后世界格局的演變課件-3
- 上海店鋪合租合同范本
- 辦公集裝購買合同范本
- 房車大白轉讓合同范本
- 養老院安全知識培訓
- 簡單夫妻自愿離婚協議書范本
- 打擊違法犯罪工作總結
- 1000以內退位減法500道
- 制氧機實施方案
- 煤炭行業的信息化與智能化轉型
- 醫療器械臨床試驗質量管理規范培訓
- 中小學語文教師教學培訓核心素養下的整本書閱讀教學培訓課件如何教好孩子閱讀
- 《院感基本知識》課件
- 急診科培訓急性腰痛的鑒別與處理
- 血管外科疾病的診斷和治療
評論
0/150
提交評論