Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目7 用戶管理系統(tǒng)設(shè)計(jì)_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目7 用戶管理系統(tǒng)設(shè)計(jì)_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目7 用戶管理系統(tǒng)設(shè)計(jì)_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目7 用戶管理系統(tǒng)設(shè)計(jì)_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目7 用戶管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目7用戶管理系統(tǒng)設(shè)計(jì)學(xué)習(xí)目標(biāo)知識(shí)技能目標(biāo):會(huì)描述CUI和GUI的特點(diǎn);會(huì)描述AWT和Swing的關(guān)系;會(huì)描述Java中GUI控件的分類;會(huì)用JFrame、JPanel、JLabel等控件編寫GUI界面的應(yīng)用程序;職業(yè)素養(yǎng)目標(biāo):具備嚴(yán)謹(jǐn)細(xì)致、規(guī)范編碼的職業(yè)素養(yǎng),確保代碼質(zhì)量和可維護(hù)性具備以用戶為中心的責(zé)任意識(shí),GUI設(shè)計(jì)時(shí)注重用戶體驗(yàn)課證融通學(xué)習(xí)內(nèi)容與“大數(shù)據(jù)應(yīng)用開發(fā)(Java)”職業(yè)技能等級(jí)標(biāo)準(zhǔn)(初級(jí))對(duì)應(yīng)關(guān)系工作任務(wù)職業(yè)技能要求1.1Java高級(jí)API編程1.1.2能熟練運(yùn)用JavaSE中的IO包完成大數(shù)據(jù)文件的讀寫和輸入輸出控制;1.1.3能運(yùn)用JavaSE中的IO包完成大數(shù)據(jù)文本解析;任務(wù)7.1編寫用戶登錄界面1在管理信息系統(tǒng)中都會(huì)有用戶登錄界面,圖形用戶界面的框架、面板、標(biāo)簽、文本框、密碼框等組件。本任務(wù)要求,用Java中的Swing工具包創(chuàng)建一個(gè)用戶登錄界面。任務(wù)詳解任務(wù)描述任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)1:識(shí)別Java中實(shí)現(xiàn)GUI的工具集Java中實(shí)現(xiàn)圖形用戶界面主要包括兩個(gè)核心庫:AWT(AbstractWindowsToolKit,抽象窗口工具包)和Swing。1.AWT

JDK1.0中包含了一個(gè)基于GUI程序設(shè)計(jì)的類庫,名為抽象窗口工具箱(AbstractWindowToolkit,簡(jiǎn)稱AWT),包含在java.awt包中。2.Swing

為了使用Java創(chuàng)建的圖形界面也能夠跨平臺(tái),即在不同操作系統(tǒng)中保持相同的外觀,從JDK1.2版本開始引入了Swing的用戶界面庫,這些Swing組件位于javax.swing包中,成為JDK基礎(chǔ)類庫的一部分。技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)1:識(shí)別Java中實(shí)現(xiàn)GUI的工具集技術(shù)準(zhǔn)備Swing包主要類層次結(jié)構(gòu)圖AWT包主要類層次結(jié)構(gòu)圖任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)2:用JFrame創(chuàng)建頂層窗口2.JFrame類的常用成員方法(1)setVisible(booleanb)功能:設(shè)置窗體的可見性,默認(rèn)不可見(2)setSize(intwidth,intheight)功能:設(shè)置窗體的大?。▽捄透撸?,單位是像素(3)setDefaultCloseOperation(intoperation)功能:設(shè)置點(diǎn)關(guān)閉按鈕時(shí)進(jìn)行的操作(4)setResizable(booleanresizable)功能:設(shè)置是否可改變窗口的大小,默認(rèn)可改變(5)setLocationRelativeTo(Componentc)功能:設(shè)置窗口相對(duì)于組件c的位置(6)setJMenuBar(JMenuBarmenubar)功能:給窗口設(shè)置菜單1.JFrame類的構(gòu)造方法(1)JFrame()功能:創(chuàng)建一個(gè)沒有標(biāo)題、初始不可見的新窗體。(2)JFrame(Stringtitle)功能:創(chuàng)建一個(gè)標(biāo)題為title、初始不可見的新窗體。技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1創(chuàng)建一個(gè)標(biāo)題為“登錄窗口”,大小為300*200的可見的窗體要求:(1)關(guān)閉窗口時(shí)結(jié)束應(yīng)用程序;(2)窗口位于屏幕的中間;(3)窗口的大小不可以改變;教師演示第一步:任務(wù)分析第二步:關(guān)鍵技術(shù)第三步:編碼實(shí)現(xiàn)第四步:運(yùn)行測(cè)試任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)3:用JPanel創(chuàng)建一個(gè)容器1.JPanel的構(gòu)造方法:JPanel()功能:創(chuàng)建一個(gè)新的JPanel,默認(rèn)為FlowLayout示例代碼:JPanelpanel=newJPanel();2.常用方法add(Componentcomp)功能:把組件comp添加到JPanel里示例代碼://把標(biāo)簽lblName添加到panel里JLabellblName=newJLabel(“姓名”);panel.add(lblName);技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)4:用JLabel顯示文本等提示信息1.常用構(gòu)造方法(1)JLabel(Stringtext)功能:創(chuàng)建一個(gè)顯示文本text的新的標(biāo)簽(2)JLabel(Iconimage)功能:創(chuàng)建一個(gè)顯示image圖像的新的標(biāo)簽(3)JLabel(Stringtext,Iconicon,inthorizontalAlignment)功能:創(chuàng)建一個(gè)顯示文本text和圖像icon的新標(biāo)簽。2.常用成員方法(1)setText(Stringtext)功能:定義該組件將顯示的單行文本(2)setIcon(Iconicon)功能:定義該組件將顯示的圖標(biāo)技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)5:用JTextField接收單行文本1.常用構(gòu)造方法(1)JTextField(intcolumns)功能:創(chuàng)建一個(gè)指定列數(shù)的新的文本框。(2)JTextField(Stringtext)功能:創(chuàng)建一個(gè)初始文本為text的新的文本框。(3)JTextField(Stringtext,intcolumns)功能:創(chuàng)建一個(gè)初始文本為text的指定列數(shù)的新的文本框。2.常用成員方法(1)setFont(Fontf)功能:設(shè)置文本框中顯示文本的字體(2)setForeground(Colorfg)功能:設(shè)置文本框中字體顯示的顏色(3)StringgetText()功能:獲取文本框中輸入的內(nèi)容技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)6:用JPasswordField接收密碼1.常用構(gòu)造方法(1)JPasswordField(intcolumns)功能:用于創(chuàng)建一個(gè)指定列數(shù)的新的密碼框JPasswordField(Stringtext)功能:構(gòu)造一個(gè)新JPasswordField用指定文本初始化。2.常用成員方法(1)char[]getPassword()功能:獲取用戶輸入的密碼(2)voidsetEchoChar(charc)功能:設(shè)置密碼框回顯的字符技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1技能點(diǎn)7:用JButton實(shí)現(xiàn)按鈕1.常用構(gòu)造方法(1)JButton(Stringtext)功能:創(chuàng)建一個(gè)顯示文本為text的按鈕(2)JButton(Iconicon)功能:創(chuàng)建一個(gè)顯示圖像icon的按鈕(3)JButton(Stringtext,Iconicon)功能:創(chuàng)建一個(gè)顯示文本為text,圖像為icon的按鈕2.常用成員方法addActionListener(ActionListenerl)功能:給按鈕添加事件監(jiān)聽的方法技術(shù)準(zhǔn)備任務(wù)7.1編寫用戶登錄界面1案例:編寫一個(gè)帶按鈕的界面教師演示第一步:任務(wù)分析實(shí)現(xiàn)該任務(wù),需要用到JFrame,JPanel和JButton類。構(gòu)建GUI界面通常采用以下三個(gè)步驟:第一步:先將一般組件添加到對(duì)應(yīng)的JPanel容器中第二步:再將JPanel容器添加到JFrame容器中第三步:設(shè)置JFrame容器的屬性第三步:編碼實(shí)現(xiàn)第四步:運(yùn)行測(cè)試任務(wù)實(shí)施任務(wù)7.1編寫用戶登錄界面1第一步:任務(wù)分析構(gòu)建登錄窗口要用到頂層容器、中間容器和一般組件第二步:編寫代碼第三步:調(diào)試運(yùn)行程序AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)7.1編寫用戶登錄界面1評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

正確顯示窗體正確顯示窗體10

正確創(chuàng)建組件正確創(chuàng)建標(biāo)簽、文本框、密碼框和按鈕30

窗體正確將組件添加到窗體中30

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

拓展提升——繪制圖像任務(wù)7.1編寫用戶登錄界面1Graphics類提供了繪制直線、矩形和橢圓等形狀的方法,可用于繪制簡(jiǎn)單的圖形。Java2DAPI可以繪制出更復(fù)雜和高質(zhì)量的圖形,使用Java2D庫繪制圖形的步驟:第一步:獲得一個(gè)Graphics2D類的對(duì)象,該類是Graphics的子類。JComponent類中提供的paintComponent方法會(huì)自動(dòng)接收一個(gè)Graphics的對(duì)象,只需要強(qiáng)制類型轉(zhuǎn)換成Graphics2D類的對(duì)象即可。第二步:創(chuàng)建繪制的圖形對(duì)象第三步:設(shè)置畫筆顏色等第四步:繪制圖形任務(wù)7.1編寫用戶登錄界面1案例:繪制一個(gè)實(shí)心矩形教師演示第一步:新建一個(gè)Java項(xiàng)目第二步:新建一個(gè)JComponent的子類DrawComponentpublicclassDrawComponentextendsJComponent{@OverrideprotectedvoidpaintComponent(Graphicsg){Graphics2Dg2=(Graphics2D)g;//第一步:獲得一個(gè)Graphics2D的對(duì)象//第二步:創(chuàng)建一個(gè)圖形對(duì)象Rectangle2Drect=newRectangle2D.Double(50,50,200,200);g2.setColor(Color.blue);//設(shè)置畫筆顏色g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//設(shè)置渲染提示,提高繪圖質(zhì)量g2.draw(rect);//第四步:繪制圖形}}第三步:新建一個(gè)JFrame的子類DrawFrame第四步:運(yùn)行程序任務(wù)描述任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2為用戶登錄窗口添加事件處理程序,實(shí)現(xiàn)登錄驗(yàn)證。當(dāng)點(diǎn)擊登錄按鈕時(shí),如果輸入用戶名為“admin”,密碼為“123456”,提示“登錄成功”,否則提示“登錄失敗”。當(dāng)點(diǎn)擊取消按鈕,將用戶名和密碼清空。具體任務(wù)任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2技能點(diǎn)1:事件處理模型事件處理模型由以下四部分組成:1.事件(Event):事件是某種狀態(tài)變化的表示,比如:點(diǎn)擊了按鈕,

關(guān)閉窗口等2.事件源(EventSource):產(chǎn)生事件的對(duì)象,比如按鈕、窗口等。3.事件監(jiān)聽器(EventListener):注冊(cè)到事件源上的對(duì)象。4.事件處理器(EventHandler):實(shí)際處理事件的代碼。技術(shù)準(zhǔn)備事件處理模型主要用于圖形用戶界面(GUI)編程,如Swing和AWT,但也可以用于其他需要事件驅(qū)動(dòng)的場(chǎng)合。事件處理模型包含在AWT包中,其類和接口位于java.awt.event包中。技能點(diǎn)2:為GUI程序添加事件處理任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2技術(shù)準(zhǔn)備事件源就是圖形用戶界面中的容器或者組件第一步:識(shí)別事件源對(duì)不同的事件源進(jìn)行不同操作會(huì)產(chǎn)生不同的事件類對(duì)象第二步:識(shí)別事件對(duì)象事件監(jiān)聽器類可以通過實(shí)現(xiàn)監(jiān)聽器接口或者繼承事件抽象適配器類來實(shí)現(xiàn)第三步:編寫事件監(jiān)聽器類可以為一個(gè)事件源注冊(cè)一個(gè)或者多個(gè)事件監(jiān)聽,注冊(cè)事件監(jiān)聽用到addXXXListener()方法第四步:注冊(cè)事件監(jiān)聽為GUI程序添加事件處理的步驟任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2編寫監(jiān)聽器類的方法方法1:通過實(shí)現(xiàn)監(jiān)聽器接口創(chuàng)建事件監(jiān)聽器類classMainFormListenerimplementsWindowListener{publicvoidwindowOpened(WindowEvente){}publicvoidwindowClosing(WindowEvente){}publicvoidwindowClosed(WindowEvente){}publicvoidwindowIconified(WindowEvente){}publicvoidwindowDeiconified(WindowEvente){}publicvoidwindowActivated(WindowEvente){}publicvoidwindowDeactivated(WindowEvente){}}方法2:通過繼承抽象的適配器類classMainForm2ListenerextendsWindowAdapter{

@Override

publicvoidwindowClosed(WindowEvente){

super.windowClosed(e);}}JDK中為抽象方法不止一個(gè)的接口提供了一個(gè)抽象的事件適配器類,比如WindowListener對(duì)應(yīng)的WindowAdapter,此時(shí)創(chuàng)建監(jiān)聽器類的方法有兩種:任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2案例:編寫一個(gè)簡(jiǎn)單的算術(shù)運(yùn)算計(jì)算器教師演示第一步:任務(wù)分析(1)構(gòu)建GUI界面需要用到的類(2)識(shí)別事件源:(3)識(shí)別事件類:ActionEvent(4)事件監(jiān)聽器類:第二步:編碼實(shí)現(xiàn)(1)新建一個(gè)Java項(xiàng)目(2)新建一個(gè)JFrame的子類CalculatorForm,在該類中先構(gòu)建GUI界面,再編寫事件監(jiān)聽器類(內(nèi)部類),接下來為四個(gè)事件源注冊(cè)事件監(jiān)聽。(3)在main方法中創(chuàng)建CalculatorForm類的對(duì)象第三步:運(yùn)行程序技能點(diǎn)3:用匿名類實(shí)現(xiàn)注冊(cè)事件監(jiān)聽任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2在Java中,你可以使用匿名類(AnonymousClass)來簡(jiǎn)潔地實(shí)現(xiàn)事件監(jiān)聽器接口,而不需要顯式地定義一個(gè)單獨(dú)的類。匿名類是一種沒有名稱的類,通常用于實(shí)現(xiàn)單一接口或繼承單個(gè)類。當(dāng)你只需要一次性使用某個(gè)接口或類時(shí),匿名類是非常方便的。技術(shù)準(zhǔn)備btnClose.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

JOptionPane.showMessageDialog(null,"你點(diǎn)擊了關(guān)閉按鈕");}});示例代碼:任務(wù)實(shí)施任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2第一步:任務(wù)分析在任務(wù)7.1中,已經(jīng)實(shí)現(xiàn)了登錄界面的構(gòu)建,在此基礎(chǔ)上為程序添加事件處理程序。識(shí)別事件源:

識(shí)別事件類:

事件監(jiān)聽器類:

第二步:編碼實(shí)現(xiàn)(1)打開任務(wù)7.1中的項(xiàng)目(2)編寫事件監(jiān)聽器類(3)為btnLogin和btnCancel注冊(cè)事件監(jiān)聽第三步:運(yùn)行程序AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

事件監(jiān)聽器類正確識(shí)別事件源、編寫事件監(jiān)聽器類20

登錄驗(yàn)證正確實(shí)現(xiàn)登錄驗(yàn)證25

清空功能正確實(shí)現(xiàn)清空用戶名和密碼25

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

拓展提升——Lambda表達(dá)式實(shí)現(xiàn)事件監(jiān)聽器類任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2一般形式:([參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2])->表達(dá)式或者([參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2])->{語句塊}使用說明:(1)如果代碼要完成的計(jì)算無法放在一個(gè)表達(dá)式里,就要像寫方法一樣,將代碼方法{}里。(2)Lambda表達(dá)式?jīng)]有參數(shù),()不能省,就像無參方法一樣。(3)如果方法參數(shù)只有一個(gè),而且參數(shù)類型是可以推導(dǎo)的,可以省略小括號(hào)。拓展提升——Lambda表達(dá)式實(shí)現(xiàn)事件監(jiān)聽器類任務(wù)7.2實(shí)現(xiàn)用戶登錄驗(yàn)證2(1)如果代碼要完成的計(jì)算無法放在一個(gè)表達(dá)式里,就要像寫方法一樣,將代碼方法{}里。示例代碼:用Lambda表達(dá)式為btnCancel注冊(cè)事件監(jiān)聽btnCancel.addActionListener((ActionEvente)->{

txtName.setText("");

txtPwd.setText("");});(3)如果方法參數(shù)只有一個(gè),而且參數(shù)類型是可以推導(dǎo)的,可以省略小括號(hào)。示例代碼::用Lambda表達(dá)式為btnCancel注冊(cè)事件監(jiān)聽btnCancel.addActionListener(e->{

txtName.setText("");

txtPwd.setText("");});(2)Lambda表達(dá)式?jīng)]有參數(shù),()不能省,就像無參方法一樣。示例代碼:()->{for(inti=1;i<=10;i++)System.out.println(i);}使用說明:任務(wù)描述任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3根據(jù)系統(tǒng)需求分析,用戶管理系統(tǒng)主界面包含“用戶管理”“用戶信息”“系統(tǒng)設(shè)置”三個(gè)菜單,“用戶管理”菜單下有:“添加用戶”“修改用戶”“刪除用戶”“搜索用戶”四個(gè)菜單項(xiàng),“用戶信息”菜單下有:“基本信息”“修改密碼”兩個(gè)菜單項(xiàng),“系統(tǒng)設(shè)置”菜單下有:“系統(tǒng)日志”菜單項(xiàng),如圖7.12所示。本任務(wù)要求,根據(jù)需求分析,為用戶管理系統(tǒng)設(shè)置菜單。具體任務(wù)任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3技能點(diǎn)1:構(gòu)建菜單1.JMenuBar類,實(shí)現(xiàn)菜單欄(1)構(gòu)造方法:JMenuBar()創(chuàng)建一個(gè)新的菜單欄(2)常用成員方法:

add(JMenumenu):將菜單menu添加到菜單欄的末尾2.JMenu類,實(shí)現(xiàn)菜單(1)常用構(gòu)造方法:JMenu(Stringstr):創(chuàng)建一個(gè)文本為str的新的JMenu對(duì)象(2)常用成員方法:add(JMenuItemmenuItem):將menuItem添加到JMenu的末尾3.JMenuItem類,實(shí)現(xiàn)菜單項(xiàng)(1)常用構(gòu)造方法

:JMenuItem(Stringtext):用指定的文本創(chuàng)建一個(gè)JMenuItem技術(shù)準(zhǔn)備構(gòu)建菜單需要用到j(luò)avax.swing包下的JMenuBar,JMenu,JMenuItem類。任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3技能點(diǎn)2:為頂層容器設(shè)置菜單在JFrame類中提供了一個(gè)方法setJMenuBar(JMenuBarmenuBar)可以為頂層容器設(shè)置菜單。技術(shù)準(zhǔn)備JMenuBarmenuBar=newJMenuBar();JMenumnFile=newJMenu("文件");JMenuItemmiNew=newJMenuItem("新建");mnFile.add(miNew);menuBar.add(mnFile);JFrameframe=newJFrame();//為窗體設(shè)置菜單frame.setJMenuBar(menuBar);任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3案例:構(gòu)建如圖所示的菜單教師演示任務(wù)實(shí)施任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3第一步:任務(wù)分析根據(jù)任務(wù)描述,分析完成任務(wù)需要用到類和對(duì)象,填寫在表中組件類名對(duì)象名作用頂層容器

菜單欄

菜單

菜單項(xiàng)

任務(wù)實(shí)施任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3第二步:編碼實(shí)現(xiàn)(1)新建一個(gè)Java項(xiàng)目,創(chuàng)建構(gòu)建菜單類、構(gòu)建窗體的類和包含main方法的類。(2)構(gòu)建菜單(3)創(chuàng)建窗體(4)在main方法中創(chuàng)建MainForm的對(duì)象第三步:運(yùn)行程序AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

正確顯示窗體正確顯示窗體10

正確顯示菜單菜單個(gè)數(shù)、菜單項(xiàng)完整30

窗體屬性正確大小、可見性、位置等符合要求30

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

拓展提升——彈出式菜單的創(chuàng)建任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3彈出式菜單(又稱為右鍵菜單)是不固定在菜單欄中,而是隨處浮動(dòng)的菜單。Swing包中的JPopupMenu類和JMenuItem給出了彈出式菜單的實(shí)現(xiàn)。彈出式菜單的創(chuàng)建和常規(guī)菜單創(chuàng)建方法類似,但彈出式菜單沒有標(biāo)題,不會(huì)總顯示在窗體頂部,需要調(diào)用show()方法顯示彈出式菜單,在show()方法中,要指定彈出式菜單的父組件和彈出式菜單在父組件中的位置。創(chuàng)建彈出式菜單的步驟如下:第一步:創(chuàng)建JPopupMenu類的對(duì)象第二步:添加菜單項(xiàng)第三步:設(shè)置彈出式觸發(fā)器第四步:為容器添加鼠標(biāo)事件,實(shí)現(xiàn)單擊右鍵顯示彈出式菜單任務(wù)7.3創(chuàng)建用戶管理系統(tǒng)菜單3案例:創(chuàng)建彈出式菜單,用于為JPanel設(shè)置背景顏色教師演示任務(wù)描述任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4在上一個(gè)任務(wù)中,已經(jīng)根據(jù)需求分析完成了用戶管理系統(tǒng)的主界面構(gòu)建,在主界面中包含系統(tǒng)所需要的菜單。本任務(wù)在任務(wù)7.3的基礎(chǔ)上,實(shí)現(xiàn)單擊菜單選項(xiàng),在主界面中加載對(duì)應(yīng)的面板。比如單擊“添加用戶信息”,加載添加用戶信息面板。具體任務(wù)任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面3技能點(diǎn)1:為容器指定布局管理器布局管理器:管理組件在容器中的位置和大小。每一個(gè)容器都有一個(gè)默認(rèn)的布局管理器,JFrame默認(rèn)的布局是BorderLayout,JPanel默認(rèn)的布局是FlowLayout。Java提供的布局管理器類,包含java.awt包中,常見的布局管理器類有:FlowLayout(流布局管理器)、BorderLayout(邊界布局管理器)、GridLayout(網(wǎng)格布局管理器)、GridBagLayout(網(wǎng)格袋布局管理器)、BoxLayout(盒布局管理器)和CardLayout(卡片布局管理器)等。每個(gè)容器都有默認(rèn)的布局管理器,也可以為容器指定布局管理器。為容器指定布局管理器的步驟:先創(chuàng)建一個(gè)布局管理器類的對(duì)象,接下來,調(diào)用容器類的setLayout()方法為容器指定布局。技術(shù)準(zhǔn)備任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4技能點(diǎn)2:FlowLayout的用法1.常見的構(gòu)造方法(1)FlowLayout()(2)FlowLayout(intalign)(3)FlowLayout(intalign,inthgap,intvgap)2.常用成員方法setAlignment(int):設(shè)置布局的對(duì)齊方法setHgap(int):設(shè)置組件之間水平間隔setVgap(int):設(shè)置組件之間垂直間隔技術(shù)準(zhǔn)備FlowLayout(流布局管理器):按照組件添加到容器的順序從左到右顯示組件,一行顯示不下,換到下一行顯示,默認(rèn)組件在容器中是居中對(duì)齊,水平和垂直的間隔是5個(gè)像素。示例代碼:創(chuàng)建了一個(gè)左對(duì)齊,水平和垂直間隔都是10的流布局管理器類的對(duì)象flFlowLayoutfl=newFlowLayout();fl.setAlignment(FlowLayout.LEFT);fl.setHgap(10);fl.setVgap(10);任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4案例:創(chuàng)建一個(gè)GUI界面,包含兩個(gè)按鈕,分別顯示“確定”和“取消”。要求:按鈕左對(duì)齊,水平和垂直間隔10像素教師演示第一步:任務(wù)分析JPanel默認(rèn)的布局是居中對(duì)齊,水平和垂直間隔為5個(gè)像素的FlowLayout,和題目要求不一致。因此,需要重新指定JPanel的布局。第二步:編碼實(shí)現(xiàn)第三步:運(yùn)行程序技能點(diǎn)3:GridLayout的用法任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面41.常用構(gòu)造方法(1)GridLayout(introws,intcols):創(chuàng)建一個(gè)指定行數(shù)和列數(shù)的新的網(wǎng)格布局管理器的對(duì)象示例代碼:GridLayoutgl=newGridLayout(3,2);(2)GridLayout(introws,intcols,inthgap,intvgap):創(chuàng)建一個(gè)指定行數(shù)、列數(shù)指定水平和垂直間隔的新的網(wǎng)格布局管理器的對(duì)象示例代碼:GridLayoutgl=newGridLayout(3,2,10,10);技術(shù)準(zhǔn)備GridLayout(網(wǎng)格布局管理器):將容器分成M行N列的矩陣,添加到GridLayout布局的容器中的組件的大小相同。通常用于界面中局部布局。任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4案例:構(gòu)建一個(gè)包含2行3列的6個(gè)按鈕的界面教師演示第一步:任務(wù)分析要滿足2行3列大小相同的6個(gè)按鈕,容器需要采用GridLayout布局。第二步:編碼實(shí)現(xiàn)

GridLayout

gl=newGridLayout(2,3);

//初始化GridLayoutthis.setLayout(gl);//為容器設(shè)置布局管理器第三步:運(yùn)行程序技能點(diǎn)4:BorderLayout的用法任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面41.常用構(gòu)造方法(1)BorderLayout():創(chuàng)建一個(gè)沒有水平和垂直間距的邊界布局對(duì)象(2)BorderLayout(inthgap,intvgap):創(chuàng)建一個(gè)指定水平和垂直間距的邊界布局對(duì)象2.常用屬性BorderLayout.NORTH:北面布局限制(容器上方)BorderLayout.SOUTH:南面布局限制(容器下方)BorderLayout.WEST:西面布局限制(容器左側(cè))BorderLayout.EAST:東面布局限制(容器右側(cè))BorderLayout.CENTER:中布局限制(容器中間)技術(shù)準(zhǔn)備BorderLayout(邊界布局管理器)把容器分成東、西、南、北、中五個(gè)方位3.將組件添加到指定方位的步驟第一步:創(chuàng)建一個(gè)BorderLayout的對(duì)象第二步:為容器指定布局管理器

第三步:將組件添加到容器指定方位任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4案例:編寫一個(gè)簡(jiǎn)易計(jì)算器面教師演示計(jì)算器的界面原型如圖所示。包含一個(gè)編輯框和若干按鈕,編輯框位于上方,4行4列共16個(gè)按鈕大小相等技能點(diǎn)5:GridBagLayout的用法任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面41.GridBagLayout構(gòu)造方法

GridBagLayout():創(chuàng)建一個(gè)新的網(wǎng)格袋布局管理器類的對(duì)象2.成員方法(1)setConstraints(Componentcomp,GridBagConstraintsconstraints)功能:給comp組件設(shè)置constraints約束3.GridBagConstraints的常用屬性gridx,gridy,anchor等技術(shù)準(zhǔn)備GridBagLayout(網(wǎng)格袋布局管理器)可以指定組件在容器中的位置(具體的某一行,某一列),而且組件的大小可以不相同,是一種比較靈活的布局管理器。GridBagLayout和GridBagConstraints一起使用,GridBagConstraints類指定使用GridBagLayout類布置的組件的約束。GridBagLayout的使用步驟第一步:創(chuàng)建GridBagLayout,GridBagConstraints的對(duì)象GridBagLayoutgbl=newGridBagLayout();GridBagConstraintsgbc=newGridBagConstraints();第二步:為容器指定布局panel.setLayout(gbl);第三步:給組件添加約束gbl.setConstraints(lblMsg,gbc);第四步:把受約束的組件添加到容器里任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4案例:參照界面原型圖,用網(wǎng)格袋布局完善用戶登錄界面教師演示技能點(diǎn)6:實(shí)現(xiàn)單選按鈕任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4實(shí)現(xiàn)單選按鈕的步驟:第一步:創(chuàng)建JRadioButton的對(duì)象第二步:創(chuàng)建ButtonGroup的對(duì)象第三步:將JRadioButton的對(duì)象添加到ButtonGoup中技術(shù)準(zhǔn)備單選按鈕是在多個(gè)選項(xiàng)中選擇其中一個(gè),因此必須對(duì)單選按鈕進(jìn)行分組。要實(shí)現(xiàn)單選按鈕需要用到JRadioButton和ButtonGroup類。JRadioButton用于創(chuàng)建單選按鈕,ButtonGroup可實(shí)現(xiàn)單選按鈕的組對(duì)象。示例代碼:創(chuàng)建單選按鈕組,實(shí)現(xiàn)性別選擇JRadioButtonrbMale=newJRadioButton("男");JRadioButtonrbFemale=newJRadioButton("女");ButtonGroupbg=newButtonGroup();bg.add(rbFemale);bg.add(rbFemale);任務(wù)實(shí)施任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面3第一步:任務(wù)分析根據(jù)任務(wù)描述,本任務(wù)需要構(gòu)建七個(gè)界面,并為菜單項(xiàng)添加事件監(jiān)聽,實(shí)現(xiàn)點(diǎn)擊某一個(gè)菜單項(xiàng),加載對(duì)應(yīng)的面板。添加用戶信息面板采用的布局為網(wǎng)格袋布局,包含的組件及其相關(guān)的約束第二步:編寫添加用戶信息面板第三步:編寫修改用戶信息面板第四步:編寫其余五個(gè)界面,并添加事件監(jiān)聽第五步:調(diào)試運(yùn)行程序AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面3評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

添加用戶信息正確創(chuàng)建新建用戶信息面板、添加事件監(jiān)聽10

修改用戶信息正確創(chuàng)建修改用戶信息面板、添加事件監(jiān)聽20

刪除用戶信息正確創(chuàng)建刪除用戶信息面板、添加事件監(jiān)聽20

用戶基本信息正確創(chuàng)建查看用戶信息面板、添加事件監(jiān)聽20

修改密碼正確創(chuàng)建修改密碼面板、添加事件監(jiān)聽10

編碼規(guī)范變量命名規(guī)范、有合理的注釋10

拓展提升——對(duì)話框的用法任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面31.選項(xiàng)對(duì)話框Swing包中JOptionPane類中包含一組static方法用于顯示簡(jiǎn)單對(duì)話框。showMessageDialog():顯示一條消息并等待用戶點(diǎn)擊OKshowComfirmDialog():顯示一條消息并得到用戶確認(rèn)(OK/Cancel)showOptionDialog():顯示一條消息并獲得用戶在一組選項(xiàng)中的選擇showInputDialog():顯示一條消息并獲得用戶輸入的一行文本2.文件對(duì)話框在一個(gè)應(yīng)用中,常常會(huì)用到打開和保存文件。Swing中提供了JFileChoose類,通過該類的showOpenDialog()方法可以顯示打開文件對(duì)話框,showSaveDialog()方法可顯示保存文件對(duì)話框。拓展提升——打開文件的步驟:任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面3JFileChooserfileChooser=newJFileChooser();第一步:創(chuàng)建一個(gè)JFileChooser對(duì)象(1)設(shè)置當(dāng)前打開路徑fileChooser.setMultiSelectionEnabled(true);(2)設(shè)置允許選擇多個(gè)文件fileChooser.setMultiSelectionEnabled(true);第二步:完成對(duì)話框?qū)傩缘脑O(shè)置intresult=fileChooser.showOpenDialog(this);第三步:顯示對(duì)話框if(result==JFileChooser.APPROVE_OPTION){Filefile=fileChooser.getSelectedFile();

//讀取文件內(nèi)容}第四步:獲得打開的文件任務(wù)7.4構(gòu)建用戶管理系統(tǒng)界面4案例:編寫一個(gè)簡(jiǎn)單記事本,實(shí)現(xiàn)打開文件功能教師演示任務(wù)描述任務(wù)7.5用文件保存用戶信息3在任務(wù)7.1到任務(wù)7.4已經(jīng)實(shí)現(xiàn)創(chuàng)建用戶登錄界面和系統(tǒng)主界面,本任務(wù)實(shí)現(xiàn)用戶登錄成功后跳轉(zhuǎn)到系統(tǒng)主界面。當(dāng)點(diǎn)擊添加用戶信息時(shí),將輸入的用戶信息寫到user.dat文件中。具體任務(wù)任務(wù)7.5用文件保存用戶信息3技能點(diǎn)1:文件輸入流和輸出流JDK中提供了大量的輸入和輸出類庫,主要包含在java.io和java.nio中。字節(jié)流輸入流的基類InputStream,字節(jié)輸出流的基類OutputStream,字符輸入流的基類是Reader,字符輸出流的基類是Writer。常用的System.in和System.out也是流類,是InputStream類型,代表標(biāo)準(zhǔn)輸入流,也就是接收來自鍵盤的輸入。System.out是OutputStream的子類PrintStream類型,代表標(biāo)準(zhǔn)輸出流,也就是將數(shù)據(jù)輸出到屏幕。對(duì)文件進(jìn)行讀寫時(shí),常用到File類、FileInputStream、FileOutputStream、FileReader、FileWriter等類。技術(shù)準(zhǔn)備任務(wù)7.5用文件保存用戶信息3技術(shù)準(zhǔn)備——File類的用法1.File類File類中用于訪問文件或者目錄,提供了大量對(duì)文件操作相關(guān)的方法。File類的對(duì)象可以表示一個(gè)絕對(duì)路徑的文件對(duì)象,或者相對(duì)路徑的文件對(duì)象,也可以表示一個(gè)目錄。示例代碼:Filefile;//文件名file=newFile(“JavaFile”);//父和子路徑名file=newFile(“\\”,”JavaFile”);Filedir=newFile(“\\”);//File對(duì)象和路徑名file=newFile(dir,”JavaFile”);任務(wù)7.5用文件保存用戶信息3技能點(diǎn)2:隨機(jī)讀寫文件1.常用構(gòu)造方法(1)RandomAccessFile(Filefile,Stringmode)(2)RandomAccessFile(Stringname,Stringmode)2.常用成員方法(1)voidseek(longpos)(2)longgetFilePointer():返回文件指針的當(dāng)前位置(3)longlength():以字節(jié)為單位返回文件長(zhǎng)度(4)writeBytes(Strings):將s寫入文件在讀寫大文件時(shí),才用從頭到尾順序讀寫效率會(huì)比較低,Java中RandomAccessFile類可以實(shí)現(xiàn)對(duì)文件進(jìn)行隨機(jī)讀取。技術(shù)準(zhǔn)備任務(wù)7.5用文件保存用戶信息3案例:在用戶登錄界面,當(dāng)用戶登錄成功后,將用戶登錄情況(用戶名,登錄日期,登錄時(shí)間)寫入日志文件末尾教師演示第一步:任務(wù)分析實(shí)現(xiàn)將登錄日志寫入文件末尾需用到RandomAccessFile類,寫入信息包括用戶名和登錄日期和時(shí)間。第二步:編碼實(shí)現(xiàn)

RandomAccessFileraf=newRandomAccessFile("log.txt","rw");//創(chuàng)建解析日期和時(shí)間的對(duì)象SimpleDateFormatfmt=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");//獲取格式化的系統(tǒng)日期和時(shí)間字符串StringdateStr=fmt.format(newDate());raf.seek(raf.length());//將文件指針定位到日志文件末尾//將用戶名、登錄日期和時(shí)間寫入日志文件raf.writeBytes(name+":"+dateStr+"\n");技能點(diǎn)3:將對(duì)象寫入文件任務(wù)7.5用文件保存用戶信息3在Java中要實(shí)現(xiàn)從文件中讀寫對(duì)象,首先讀寫對(duì)象類要是序列號(hào)的類,需實(shí)現(xiàn)Serializable接口,其次用到j(luò)ava.io包中的ObjectOutputStream和ObjectInputStream類。1.序列化當(dāng)想要永久存儲(chǔ)對(duì)象(寫入文件或者套接字)時(shí),需要將對(duì)象轉(zhuǎn)換成字節(jié)流,當(dāng)從文件或者網(wǎng)絡(luò)套接字讀取對(duì)象時(shí),需要將字節(jié)流轉(zhuǎn)換成對(duì)象。將對(duì)象轉(zhuǎn)換成字節(jié)流的過程稱為序列化,將字節(jié)流轉(zhuǎn)換成對(duì)象的過程稱為反序列化。不是所有的對(duì)象都可以序列化的,可序列化的類必須實(shí)現(xiàn)Serializable接口,該接口沒有抽象方法,因此只需要在定義類時(shí)加上implementsSerializable即可。技術(shù)準(zhǔn)備

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論