第3章Java圖形用戶界面_第1頁
第3章Java圖形用戶界面_第2頁
第3章Java圖形用戶界面_第3頁
第3章Java圖形用戶界面_第4頁
第3章Java圖形用戶界面_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章Java圖形用戶界面【學(xué)習目標】1.了解底層容器JFrame、JApplet和JDialog等以及中間容器JPanel,熟悉容器布局的設(shè)置和容器中圖形組件的添加。2.熟悉Java常用圖形組件(包括標簽、文本框、密碼框、文本區(qū)、按鈕、單選按鈕和多選按鈕、列表和下拉列表、樹和表格、滑動桿、菜單、工具條、內(nèi)部窗口、文件對話框等),及組件的事件處理(鍵盤和鼠標事件的處理等)。能夠利用這些組件設(shè)計好的圖形界面。3.熟悉字體、顏色的設(shè)置,以及圖形和圖像的繪制和顯示。熟悉計時器的使用。3.1底層容器和容器布局3.2常用組件及事件處理3.3鍵盤事件和鼠標事件3.5繪制圖形和顯示圖像、圖像緩沖區(qū)3.4菜單、工具條、文件選擇對話框和內(nèi)部窗口的使用

3.1底層容器和容器布局

3.1.1容器(Container)和組件(Component)圖3-1部分awt組件(圖左)和swing組件(圖右)及它們的繼承關(guān)系1.java.awt包2.javax.swing包(a)

(b)圖3-2java.awt.Button和javax.swing.JButton類不同的繼承關(guān)系 3.底層容器 4.面板類(JPanel) 3.1.2常用布局(Layout) 布局是指組件在容器中的擺放方式。 1.FlowLayout布局(1)創(chuàng)建FlowLayout布局(2)設(shè)置容器布局(3)向容器中添加組件2.BorderLayout布局3.GridLayout布局 3.1.3窗口(JFrame)

JFrame類從容器類Container派生而來,是Java中的底層容器之一。 1.創(chuàng)建窗口 2.設(shè)置窗口的一些方法 3.得到窗口內(nèi)容面板、添加組件和設(shè)置布局 3.1.4小程序(JApplet)

JApplet也是Java中的底層窗口容器,與應(yīng)用程序不同,它是無邊框的容器。 JApplet同樣能夠容納其他swing組件,如標簽、按鈕和文本組件等,還支持下拉菜單,也可以用來顯示文字、圖像以及繪制各種圖形等。 3.1.5對話框 1.使用JOptionPane類的靜態(tài)方法創(chuàng)建對話框 下面是3種常用對話框。 ①JOptionPane.showInputDialog(Stringstr)顯示有一個文本輸入框的對話框。 ②JOptionPane.showMessageDialog(Component

parentComp,Object

message)顯示信息提示對話框。 ③JOptionPane.showConfirmDialog(Component

parentComp,Object

message)顯示如圖3-5(a)所示的確認對話框。(a)(b)圖3-5例3.3程序的運行結(jié)果 2.對話框(JDialog)3.2常用組件及事件處理 3.2.1組件的通用設(shè)置 3.2.2字體(Font)的創(chuàng)建和顏色(Color) 1.字體的(Font)創(chuàng)建和使用(1)創(chuàng)建字體對象 使用java.awt.Font類的構(gòu)造方法Font(Stringname,intstyle,intsize)創(chuàng)建字體對象。(2)設(shè)置字體 ①設(shè)置畫筆(Graphics類對象)的字體 ②設(shè)置組件上文字的字體 2.顏色(Color)的創(chuàng)建和使用 (1)創(chuàng)建顏色對象 使用java.awt.Color類的構(gòu)造方法Color(intred,intgreen,intblue)創(chuàng)建顏色對象。(2)設(shè)置顏色 ①設(shè)置畫筆(Graphics類對象)的顏色,使用Graphics類中的方法voidsetColor(Colorc)設(shè)置畫筆顏色。 ②設(shè)置swing組件的文字顏色和背景顏色,方法setBackground(Color

clr)用來設(shè)置組件的背景顏色;方法setForeground(Color

clr)用來設(shè)置組件的前景色,即組件上文字的顏色。(3)顏色常量 3.調(diào)色板(JColorChooser)對話框 顏色選擇器類javax.swing.JColorChooser的以下靜態(tài)方法顯示如圖3-6所示的調(diào)色板對話框,方法返回結(jié)果為選中的顏色對象:圖3-6調(diào)色板對話框的顯示效果 3.2.3Java中的事件及事件的處理 1.Java的委托事件處理模型圖3-8Java事件的產(chǎn)生及處理過程(1)事件源 Java圖形用戶界面中的很多組件可以引發(fā)各種事件,這些事件在Java中都封裝為名字以Event結(jié)尾的類。(2)委托事件處理模型和監(jiān)聽器 Java的事件處理模式是委托事件處理模型。(3)注冊 由于組件的事件處理委托給相關(guān)的接口對象,因此必須調(diào)用組件所擁有的add×××Listener()方法將組件注冊給事件的處理者(監(jiān)聽器),即對組件增加監(jiān)聽。 2.處理事件的3種編程方式(1)類頭定義中實現(xiàn)接口處理事件(2)通過匿名類(接口)對象處理事件(3)通過定義內(nèi)部類處理事件 3.2.4標簽、文本框、密碼框、文本區(qū)和按鈕的使用 1.標簽(JLabel) ①標簽類(javax.swing.JLabel)對象用來顯示提示文字、圖標。 ②可以創(chuàng)建具有文字和圖標的標簽,也可以設(shè)置標簽的圖標。 ③通過javax.swing.SwingConstants接口中的很多靜態(tài)常量指定標簽、按鈕等組件的文字相對于圖片的位置。 2.文本框(JTextField)和密碼輸入框(JPasswordField) ①文本框(javax.swing.JTextField)接收用戶輸入的一行文本。 ②密碼輸入框(javax.swing.JPasswordField)接收用戶的輸入密碼,以*顯示,它是文本輸入框的子類。 ③它們都可以響應(yīng)回車動作事件(java.awt.event.ActionEvent),處理方式類似于按鈕的動作事件處理。 ④得到文本框和密碼框的輸入內(nèi)容。 3.文本區(qū)(JTextArea) ①文本區(qū)(javax.swing.JTextArea)可以接收用戶輸入的多行文本。 ②使用方法setLineWrap(true)可以設(shè)置文本自動換行。 ③使用javax.swing.JScrollPane類可以給文本區(qū)增加滾動條。 4.按鈕(JButton) 3.2.5單選按鈕(JRadioButton)和多選按鈕(JCheckBox)的使用 1.單選按鈕(JRadioButton)和按鈕組(ButtonGroup) ①使用下面的構(gòu)造方法創(chuàng)建單選按鈕。 ②要使JRadioButton對象成為單選,必須先創(chuàng)建按鈕組(ButtonGroup)對象,然后使用按鈕組的add()方法將其添加到按鈕組中,一組中只能有一個被選中。 2.多選按鈕(JCheckBox) ①使用下面的構(gòu)造方法創(chuàng)建多選按鈕。 ②使用容器類的add()方法將其添加到容器中。3.共用方法4.選項事件(ItemEvent)處理5.選項卡面板(JTabbedPane) 3.2.6列表(JList)和下拉列表(JComboBox)的使用 1.列表(JList)和列表選擇事件(ListSelectionEvent)處理 2.下拉列表(JComboBox) 3.2.7樹節(jié)點(DefaultMutableTreeNode)和樹(JTree)的使用 1.樹節(jié)點(DefaultMutableTreeNode) 2.樹(JTree) 3.分割面板(JSplitPane) 使用分割面板javax.swing.JSplitPane類的以下構(gòu)造方法可以實現(xiàn)水平或上下分割效果。 3.2.8表格模型(AbstractTableModel)和表格(JTable)的使用 1.表格模型(AbstractTableModel) 表格模型類 javax.swing.table.AbstractTableModel是抽象類。 派生該類的子類,可以靈活創(chuàng)建表格模型。 2.默認表格模型(DefaultTableModel) 3.JTable類 表格類javax.swing.JTable用于根據(jù)表格模型創(chuàng)建表格對象。 使用表格類的構(gòu)造方法 JTable(TableModel

model)可以創(chuàng)建指定表格模型的表格對象,參數(shù)model是實現(xiàn)了javax.swing.table.TableModel接口的表格模型。 3.2.9滑動桿(JSlider)的使用 1.創(chuàng)建滑動桿(JSlider)對象 2.得到滑動桿的滑塊位置所代表的值 3.滑動桿改變事件(ChangeEvent)處理 3.2.10計時器(Timer)的使用 1.創(chuàng)建計時器(Timer)對象 計時器javax.swing.Timer類用來在每隔指定的時間后,引發(fā)動作事件(ActionEvent)。 使用以下構(gòu)造方法可以創(chuàng)建一個計時器(Timer類)對象。 2.計時器的啟動、停止和設(shè)置延時 ①publicvoidstart(),啟動該Timer,之后便開始每隔指定時間引發(fā)動作事件。 ②publicvoidstop(),停止該Timer,停止向監(jiān)聽器發(fā)送動作事件。 ③publicvoidsetDelay(intdelay),設(shè)置延遲為delay毫秒,即引發(fā)動作事件的時間間隔。3.3鍵盤事件和鼠標事件

3.3.1鍵盤事件(KeyEvent)及處理 1.鍵盤事件(KeyEvent) 2.鍵盤監(jiān)聽接口(KeyListener)和鍵盤適配器類(KeyAdapter) 3.組件注冊給鍵盤監(jiān)聽接口 3.3.2鼠標事件(MouseEvent)及處理 1.鼠標事件(MouseEvent) 當鼠標鍵壓下、釋放、點擊及鼠標進入界面、鼠標離開界面,或鼠標移動、壓下鼠標鍵拖動時都會引發(fā)鼠標事件(java.awt.event.MouseEvent),javax.swing包的組件都能響應(yīng)鼠標事件 2.鼠標監(jiān)聽接口(MouseListener) 當鼠標鍵壓下、釋放、點擊或鼠標進入界面、離開界面時引發(fā)的鼠標事件,通過鼠標監(jiān)聽接口java.awt.event.MouseListener中的以下5個方法來處理。3.鼠標適配器類(MouseAdapter) 4.鼠標移動監(jiān)聽接口(MouseMotionListener)和適配器類(MouseMotionAdapter)

①publicvoidmouseDragged(MouseEvente),壓下鼠標鍵并拖動鼠標時執(zhí)行。 ②publicvoidmouseMoved(MouseEvente),不壓下鼠標鍵且移動鼠標時執(zhí)行。3.4菜單、工具條、文件選擇

對話框和內(nèi)部窗口的使用

3.4.1菜單(JMenu)的使用1.創(chuàng)建和設(shè)置菜單條(JMenuBar)2.創(chuàng)建菜單(JMenu)和菜單項(JMenuItem)3.菜單項的事件響應(yīng)和處理 3.4.2工具條(JToolBar)的使用 1.創(chuàng)建工具條(JToolBar) 2.JToolBar類常用方法 3.4.3文件選擇對話框(JFileChoose)的使用 1.創(chuàng)建文件選擇器(JFileChoose)對象 2.使用JFileChoose類的方法顯示文件選擇對話框 3.4.4內(nèi)部窗口(JInternalFrame)的使用 如果要在窗口中添加窗口,通常使用內(nèi)部窗口類javax.swing.JinternalFrame來進行。 類JInternalFrame有窗口圖標且可拖動、縮放、設(shè)置窗口大小等,還可以增加菜單,但它不能作為獨立的窗口存在3.5繪制圖形和顯示圖像、圖像緩沖區(qū)

3.5.1畫圖類(Graphics、Graphics2D)和圖像緩沖區(qū)(BufferedImage)

1.Graphics對象畫直線、

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論