版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目7用戶管理系統(tǒng)設(shè)計學習目標知識技能目標:會描述CUI和GUI的特點;會描述AWT和Swing的關(guān)系;會描述Java中GUI控件的分類;會用JFrame、JPanel、JLabel等控件編寫GUI界面的應用程序;職業(yè)素養(yǎng)目標:具備嚴謹細致、規(guī)范編碼的職業(yè)素養(yǎng),確保代碼質(zhì)量和可維護性具備以用戶為中心的責任意識,GUI設(shè)計時注重用戶體驗課證融通學習內(nèi)容與“大數(shù)據(jù)應用開發(fā)(Java)”職業(yè)技能等級標準(初級)對應關(guān)系工作任務職業(yè)技能要求1.1Java高級API編程1.1.2能熟練運用JavaSE中的IO包完成大數(shù)據(jù)文件的讀寫和輸入輸出控制;1.1.3能運用JavaSE中的IO包完成大數(shù)據(jù)文本解析;任務7.1編寫用戶登錄界面1在管理信息系統(tǒng)中都會有用戶登錄界面,圖形用戶界面的框架、面板、標簽、文本框、密碼框等組件。本任務要求,用Java中的Swing工具包創(chuàng)建一個用戶登錄界面。任務詳解任務描述任務7.1編寫用戶登錄界面1技能點1:識別Java中實現(xiàn)GUI的工具集Java中實現(xiàn)圖形用戶界面主要包括兩個核心庫:AWT(AbstractWindowsToolKit,抽象窗口工具包)和Swing。1.AWT
JDK1.0中包含了一個基于GUI程序設(shè)計的類庫,名為抽象窗口工具箱(AbstractWindowToolkit,簡稱AWT),包含在java.awt包中。2.Swing
為了使用Java創(chuàng)建的圖形界面也能夠跨平臺,即在不同操作系統(tǒng)中保持相同的外觀,從JDK1.2版本開始引入了Swing的用戶界面庫,這些Swing組件位于javax.swing包中,成為JDK基礎(chǔ)類庫的一部分。技術(shù)準備任務7.1編寫用戶登錄界面1技能點1:識別Java中實現(xiàn)GUI的工具集技術(shù)準備Swing包主要類層次結(jié)構(gòu)圖AWT包主要類層次結(jié)構(gòu)圖任務7.1編寫用戶登錄界面1技能點2:用JFrame創(chuàng)建頂層窗口2.JFrame類的常用成員方法(1)setVisible(booleanb)功能:設(shè)置窗體的可見性,默認不可見(2)setSize(intwidth,intheight)功能:設(shè)置窗體的大小(寬和高),單位是像素(3)setDefaultCloseOperation(intoperation)功能:設(shè)置點關(guān)閉按鈕時進行的操作(4)setResizable(booleanresizable)功能:設(shè)置是否可改變窗口的大小,默認可改變(5)setLocationRelativeTo(Componentc)功能:設(shè)置窗口相對于組件c的位置(6)setJMenuBar(JMenuBarmenubar)功能:給窗口設(shè)置菜單1.JFrame類的構(gòu)造方法(1)JFrame()功能:創(chuàng)建一個沒有標題、初始不可見的新窗體。(2)JFrame(Stringtitle)功能:創(chuàng)建一個標題為title、初始不可見的新窗體。技術(shù)準備任務7.1編寫用戶登錄界面1創(chuàng)建一個標題為“登錄窗口”,大小為300*200的可見的窗體要求:(1)關(guān)閉窗口時結(jié)束應用程序;(2)窗口位于屏幕的中間;(3)窗口的大小不可以改變;教師演示第一步:任務分析第二步:關(guān)鍵技術(shù)第三步:編碼實現(xiàn)第四步:運行測試任務7.1編寫用戶登錄界面1技能點3:用JPanel創(chuàng)建一個容器1.JPanel的構(gòu)造方法:JPanel()功能:創(chuàng)建一個新的JPanel,默認為FlowLayout示例代碼:JPanelpanel=newJPanel();2.常用方法add(Componentcomp)功能:把組件comp添加到JPanel里示例代碼://把標簽lblName添加到panel里JLabellblName=newJLabel(“姓名”);panel.add(lblName);技術(shù)準備任務7.1編寫用戶登錄界面1技能點4:用JLabel顯示文本等提示信息1.常用構(gòu)造方法(1)JLabel(Stringtext)功能:創(chuàng)建一個顯示文本text的新的標簽(2)JLabel(Iconimage)功能:創(chuàng)建一個顯示image圖像的新的標簽(3)JLabel(Stringtext,Iconicon,inthorizontalAlignment)功能:創(chuàng)建一個顯示文本text和圖像icon的新標簽。2.常用成員方法(1)setText(Stringtext)功能:定義該組件將顯示的單行文本(2)setIcon(Iconicon)功能:定義該組件將顯示的圖標技術(shù)準備任務7.1編寫用戶登錄界面1技能點5:用JTextField接收單行文本1.常用構(gòu)造方法(1)JTextField(intcolumns)功能:創(chuàng)建一個指定列數(shù)的新的文本框。(2)JTextField(Stringtext)功能:創(chuàng)建一個初始文本為text的新的文本框。(3)JTextField(Stringtext,intcolumns)功能:創(chuàng)建一個初始文本為text的指定列數(shù)的新的文本框。2.常用成員方法(1)setFont(Fontf)功能:設(shè)置文本框中顯示文本的字體(2)setForeground(Colorfg)功能:設(shè)置文本框中字體顯示的顏色(3)StringgetText()功能:獲取文本框中輸入的內(nèi)容技術(shù)準備任務7.1編寫用戶登錄界面1技能點6:用JPasswordField接收密碼1.常用構(gòu)造方法(1)JPasswordField(intcolumns)功能:用于創(chuàng)建一個指定列數(shù)的新的密碼框JPasswordField(Stringtext)功能:構(gòu)造一個新JPasswordField用指定文本初始化。2.常用成員方法(1)char[]getPassword()功能:獲取用戶輸入的密碼(2)voidsetEchoChar(charc)功能:設(shè)置密碼框回顯的字符技術(shù)準備任務7.1編寫用戶登錄界面1技能點7:用JButton實現(xiàn)按鈕1.常用構(gòu)造方法(1)JButton(Stringtext)功能:創(chuàng)建一個顯示文本為text的按鈕(2)JButton(Iconicon)功能:創(chuàng)建一個顯示圖像icon的按鈕(3)JButton(Stringtext,Iconicon)功能:創(chuàng)建一個顯示文本為text,圖像為icon的按鈕2.常用成員方法addActionListener(ActionListenerl)功能:給按鈕添加事件監(jiān)聽的方法技術(shù)準備任務7.1編寫用戶登錄界面1案例:編寫一個帶按鈕的界面教師演示第一步:任務分析實現(xiàn)該任務,需要用到JFrame,JPanel和JButton類。構(gòu)建GUI界面通常采用以下三個步驟:第一步:先將一般組件添加到對應的JPanel容器中第二步:再將JPanel容器添加到JFrame容器中第三步:設(shè)置JFrame容器的屬性第三步:編碼實現(xiàn)第四步:運行測試任務實施任務7.1編寫用戶登錄界面1第一步:任務分析構(gòu)建登錄窗口要用到頂層容器、中間容器和一般組件第二步:編寫代碼第三步:調(diào)試運行程序AEBCD小組協(xié)作,完成任務評價測試任務7.1編寫用戶登錄界面1評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
正確顯示窗體正確顯示窗體10
正確創(chuàng)建組件正確創(chuàng)建標簽、文本框、密碼框和按鈕30
窗體正確將組件添加到窗體中30
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——繪制圖像任務7.1編寫用戶登錄界面1Graphics類提供了繪制直線、矩形和橢圓等形狀的方法,可用于繪制簡單的圖形。Java2DAPI可以繪制出更復雜和高質(zhì)量的圖形,使用Java2D庫繪制圖形的步驟:第一步:獲得一個Graphics2D類的對象,該類是Graphics的子類。JComponent類中提供的paintComponent方法會自動接收一個Graphics的對象,只需要強制類型轉(zhuǎn)換成Graphics2D類的對象即可。第二步:創(chuàng)建繪制的圖形對象第三步:設(shè)置畫筆顏色等第四步:繪制圖形任務7.1編寫用戶登錄界面1案例:繪制一個實心矩形教師演示第一步:新建一個Java項目第二步:新建一個JComponent的子類DrawComponentpublicclassDrawComponentextendsJComponent{@OverrideprotectedvoidpaintComponent(Graphicsg){Graphics2Dg2=(Graphics2D)g;//第一步:獲得一個Graphics2D的對象//第二步:創(chuàng)建一個圖形對象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);//第四步:繪制圖形}}第三步:新建一個JFrame的子類DrawFrame第四步:運行程序任務描述任務7.2實現(xiàn)用戶登錄驗證2為用戶登錄窗口添加事件處理程序,實現(xiàn)登錄驗證。當點擊登錄按鈕時,如果輸入用戶名為“admin”,密碼為“123456”,提示“登錄成功”,否則提示“登錄失敗”。當點擊取消按鈕,將用戶名和密碼清空。具體任務任務7.2實現(xiàn)用戶登錄驗證2技能點1:事件處理模型事件處理模型由以下四部分組成:1.事件(Event):事件是某種狀態(tài)變化的表示,比如:點擊了按鈕,
關(guān)閉窗口等2.事件源(EventSource):產(chǎn)生事件的對象,比如按鈕、窗口等。3.事件監(jiān)聽器(EventListener):注冊到事件源上的對象。4.事件處理器(EventHandler):實際處理事件的代碼。技術(shù)準備事件處理模型主要用于圖形用戶界面(GUI)編程,如Swing和AWT,但也可以用于其他需要事件驅(qū)動的場合。事件處理模型包含在AWT包中,其類和接口位于java.awt.event包中。技能點2:為GUI程序添加事件處理任務7.2實現(xiàn)用戶登錄驗證2技術(shù)準備事件源就是圖形用戶界面中的容器或者組件第一步:識別事件源對不同的事件源進行不同操作會產(chǎn)生不同的事件類對象第二步:識別事件對象事件監(jiān)聽器類可以通過實現(xiàn)監(jiān)聽器接口或者繼承事件抽象適配器類來實現(xiàn)第三步:編寫事件監(jiān)聽器類可以為一個事件源注冊一個或者多個事件監(jiān)聽,注冊事件監(jiān)聽用到addXXXListener()方法第四步:注冊事件監(jiān)聽為GUI程序添加事件處理的步驟任務7.2實現(xiàn)用戶登錄驗證2編寫監(jiān)聽器類的方法方法1:通過實現(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中為抽象方法不止一個的接口提供了一個抽象的事件適配器類,比如WindowListener對應的WindowAdapter,此時創(chuàng)建監(jiān)聽器類的方法有兩種:任務7.2實現(xiàn)用戶登錄驗證2案例:編寫一個簡單的算術(shù)運算計算器教師演示第一步:任務分析(1)構(gòu)建GUI界面需要用到的類(2)識別事件源:(3)識別事件類:ActionEvent(4)事件監(jiān)聽器類:第二步:編碼實現(xiàn)(1)新建一個Java項目(2)新建一個JFrame的子類CalculatorForm,在該類中先構(gòu)建GUI界面,再編寫事件監(jiān)聽器類(內(nèi)部類),接下來為四個事件源注冊事件監(jiān)聽。(3)在main方法中創(chuàng)建CalculatorForm類的對象第三步:運行程序技能點3:用匿名類實現(xiàn)注冊事件監(jiān)聽任務7.2實現(xiàn)用戶登錄驗證2在Java中,你可以使用匿名類(AnonymousClass)來簡潔地實現(xiàn)事件監(jiān)聽器接口,而不需要顯式地定義一個單獨的類。匿名類是一種沒有名稱的類,通常用于實現(xiàn)單一接口或繼承單個類。當你只需要一次性使用某個接口或類時,匿名類是非常方便的。技術(shù)準備btnClose.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"你點擊了關(guān)閉按鈕");}});示例代碼:任務實施任務7.2實現(xiàn)用戶登錄驗證2第一步:任務分析在任務7.1中,已經(jīng)實現(xiàn)了登錄界面的構(gòu)建,在此基礎(chǔ)上為程序添加事件處理程序。識別事件源:
識別事件類:
事件監(jiān)聽器類:
第二步:編碼實現(xiàn)(1)打開任務7.1中的項目(2)編寫事件監(jiān)聽器類(3)為btnLogin和btnCancel注冊事件監(jiān)聽第三步:運行程序AEBCD小組協(xié)作,完成任務評價測試任務7.2實現(xiàn)用戶登錄驗證2評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
事件監(jiān)聽器類正確識別事件源、編寫事件監(jiān)聽器類20
登錄驗證正確實現(xiàn)登錄驗證25
清空功能正確實現(xiàn)清空用戶名和密碼25
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——Lambda表達式實現(xiàn)事件監(jiān)聽器類任務7.2實現(xiàn)用戶登錄驗證2一般形式:([參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2])->表達式或者([參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2])->{語句塊}使用說明:(1)如果代碼要完成的計算無法放在一個表達式里,就要像寫方法一樣,將代碼方法{}里。(2)Lambda表達式?jīng)]有參數(shù),()不能省,就像無參方法一樣。(3)如果方法參數(shù)只有一個,而且參數(shù)類型是可以推導的,可以省略小括號。拓展提升——Lambda表達式實現(xiàn)事件監(jiān)聽器類任務7.2實現(xiàn)用戶登錄驗證2(1)如果代碼要完成的計算無法放在一個表達式里,就要像寫方法一樣,將代碼方法{}里。示例代碼:用Lambda表達式為btnCancel注冊事件監(jiān)聽btnCancel.addActionListener((ActionEvente)->{
txtName.setText("");
txtPwd.setText("");});(3)如果方法參數(shù)只有一個,而且參數(shù)類型是可以推導的,可以省略小括號。示例代碼::用Lambda表達式為btnCancel注冊事件監(jiān)聽btnCancel.addActionListener(e->{
txtName.setText("");
txtPwd.setText("");});(2)Lambda表達式?jīng)]有參數(shù),()不能省,就像無參方法一樣。示例代碼:()->{for(inti=1;i<=10;i++)System.out.println(i);}使用說明:任務描述任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3根據(jù)系統(tǒng)需求分析,用戶管理系統(tǒng)主界面包含“用戶管理”“用戶信息”“系統(tǒng)設(shè)置”三個菜單,“用戶管理”菜單下有:“添加用戶”“修改用戶”“刪除用戶”“搜索用戶”四個菜單項,“用戶信息”菜單下有:“基本信息”“修改密碼”兩個菜單項,“系統(tǒng)設(shè)置”菜單下有:“系統(tǒng)日志”菜單項,如圖7.12所示。本任務要求,根據(jù)需求分析,為用戶管理系統(tǒng)設(shè)置菜單。具體任務任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3技能點1:構(gòu)建菜單1.JMenuBar類,實現(xiàn)菜單欄(1)構(gòu)造方法:JMenuBar()創(chuàng)建一個新的菜單欄(2)常用成員方法:
add(JMenumenu):將菜單menu添加到菜單欄的末尾2.JMenu類,實現(xiàn)菜單(1)常用構(gòu)造方法:JMenu(Stringstr):創(chuàng)建一個文本為str的新的JMenu對象(2)常用成員方法:add(JMenuItemmenuItem):將menuItem添加到JMenu的末尾3.JMenuItem類,實現(xiàn)菜單項(1)常用構(gòu)造方法
:JMenuItem(Stringtext):用指定的文本創(chuàng)建一個JMenuItem技術(shù)準備構(gòu)建菜單需要用到javax.swing包下的JMenuBar,JMenu,JMenuItem類。任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3技能點2:為頂層容器設(shè)置菜單在JFrame類中提供了一個方法setJMenuBar(JMenuBarmenuBar)可以為頂層容器設(shè)置菜單。技術(shù)準備JMenuBarmenuBar=newJMenuBar();JMenumnFile=newJMenu("文件");JMenuItemmiNew=newJMenuItem("新建");mnFile.add(miNew);menuBar.add(mnFile);JFrameframe=newJFrame();//為窗體設(shè)置菜單frame.setJMenuBar(menuBar);任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3案例:構(gòu)建如圖所示的菜單教師演示任務實施任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3第一步:任務分析根據(jù)任務描述,分析完成任務需要用到類和對象,填寫在表中組件類名對象名作用頂層容器
菜單欄
菜單
菜單項
任務實施任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3第二步:編碼實現(xiàn)(1)新建一個Java項目,創(chuàng)建構(gòu)建菜單類、構(gòu)建窗體的類和包含main方法的類。(2)構(gòu)建菜單(3)創(chuàng)建窗體(4)在main方法中創(chuàng)建MainForm的對象第三步:運行程序AEBCD小組協(xié)作,完成任務評價測試任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
正確顯示窗體正確顯示窗體10
正確顯示菜單菜單個數(shù)、菜單項完整30
窗體屬性正確大小、可見性、位置等符合要求30
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——彈出式菜單的創(chuàng)建任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3彈出式菜單(又稱為右鍵菜單)是不固定在菜單欄中,而是隨處浮動的菜單。Swing包中的JPopupMenu類和JMenuItem給出了彈出式菜單的實現(xiàn)。彈出式菜單的創(chuàng)建和常規(guī)菜單創(chuàng)建方法類似,但彈出式菜單沒有標題,不會總顯示在窗體頂部,需要調(diào)用show()方法顯示彈出式菜單,在show()方法中,要指定彈出式菜單的父組件和彈出式菜單在父組件中的位置。創(chuàng)建彈出式菜單的步驟如下:第一步:創(chuàng)建JPopupMenu類的對象第二步:添加菜單項第三步:設(shè)置彈出式觸發(fā)器第四步:為容器添加鼠標事件,實現(xiàn)單擊右鍵顯示彈出式菜單任務7.3創(chuàng)建用戶管理系統(tǒng)菜單3案例:創(chuàng)建彈出式菜單,用于為JPanel設(shè)置背景顏色教師演示任務描述任務7.4構(gòu)建用戶管理系統(tǒng)界面4在上一個任務中,已經(jīng)根據(jù)需求分析完成了用戶管理系統(tǒng)的主界面構(gòu)建,在主界面中包含系統(tǒng)所需要的菜單。本任務在任務7.3的基礎(chǔ)上,實現(xiàn)單擊菜單選項,在主界面中加載對應的面板。比如單擊“添加用戶信息”,加載添加用戶信息面板。具體任務任務7.4構(gòu)建用戶管理系統(tǒng)界面3技能點1:為容器指定布局管理器布局管理器:管理組件在容器中的位置和大小。每一個容器都有一個默認的布局管理器,JFrame默認的布局是BorderLayout,JPanel默認的布局是FlowLayout。Java提供的布局管理器類,包含java.awt包中,常見的布局管理器類有:FlowLayout(流布局管理器)、BorderLayout(邊界布局管理器)、GridLayout(網(wǎng)格布局管理器)、GridBagLayout(網(wǎng)格袋布局管理器)、BoxLayout(盒布局管理器)和CardLayout(卡片布局管理器)等。每個容器都有默認的布局管理器,也可以為容器指定布局管理器。為容器指定布局管理器的步驟:先創(chuàng)建一個布局管理器類的對象,接下來,調(diào)用容器類的setLayout()方法為容器指定布局。技術(shù)準備任務7.4構(gòu)建用戶管理系統(tǒng)界面4技能點2:FlowLayout的用法1.常見的構(gòu)造方法(1)FlowLayout()(2)FlowLayout(intalign)(3)FlowLayout(intalign,inthgap,intvgap)2.常用成員方法setAlignment(int):設(shè)置布局的對齊方法setHgap(int):設(shè)置組件之間水平間隔setVgap(int):設(shè)置組件之間垂直間隔技術(shù)準備FlowLayout(流布局管理器):按照組件添加到容器的順序從左到右顯示組件,一行顯示不下,換到下一行顯示,默認組件在容器中是居中對齊,水平和垂直的間隔是5個像素。示例代碼:創(chuàng)建了一個左對齊,水平和垂直間隔都是10的流布局管理器類的對象flFlowLayoutfl=newFlowLayout();fl.setAlignment(FlowLayout.LEFT);fl.setHgap(10);fl.setVgap(10);任務7.4構(gòu)建用戶管理系統(tǒng)界面4案例:創(chuàng)建一個GUI界面,包含兩個按鈕,分別顯示“確定”和“取消”。要求:按鈕左對齊,水平和垂直間隔10像素教師演示第一步:任務分析JPanel默認的布局是居中對齊,水平和垂直間隔為5個像素的FlowLayout,和題目要求不一致。因此,需要重新指定JPanel的布局。第二步:編碼實現(xiàn)第三步:運行程序技能點3:GridLayout的用法任務7.4構(gòu)建用戶管理系統(tǒng)界面41.常用構(gòu)造方法(1)GridLayout(introws,intcols):創(chuàng)建一個指定行數(shù)和列數(shù)的新的網(wǎng)格布局管理器的對象示例代碼:GridLayoutgl=newGridLayout(3,2);(2)GridLayout(introws,intcols,inthgap,intvgap):創(chuàng)建一個指定行數(shù)、列數(shù)指定水平和垂直間隔的新的網(wǎng)格布局管理器的對象示例代碼:GridLayoutgl=newGridLayout(3,2,10,10);技術(shù)準備GridLayout(網(wǎng)格布局管理器):將容器分成M行N列的矩陣,添加到GridLayout布局的容器中的組件的大小相同。通常用于界面中局部布局。任務7.4構(gòu)建用戶管理系統(tǒng)界面4案例:構(gòu)建一個包含2行3列的6個按鈕的界面教師演示第一步:任務分析要滿足2行3列大小相同的6個按鈕,容器需要采用GridLayout布局。第二步:編碼實現(xiàn)
GridLayout
gl=newGridLayout(2,3);
//初始化GridLayoutthis.setLayout(gl);//為容器設(shè)置布局管理器第三步:運行程序技能點4:BorderLayout的用法任務7.4構(gòu)建用戶管理系統(tǒng)界面41.常用構(gòu)造方法(1)BorderLayout():創(chuàng)建一個沒有水平和垂直間距的邊界布局對象(2)BorderLayout(inthgap,intvgap):創(chuàng)建一個指定水平和垂直間距的邊界布局對象2.常用屬性BorderLayout.NORTH:北面布局限制(容器上方)BorderLayout.SOUTH:南面布局限制(容器下方)BorderLayout.WEST:西面布局限制(容器左側(cè))BorderLayout.EAST:東面布局限制(容器右側(cè))BorderLayout.CENTER:中布局限制(容器中間)技術(shù)準備BorderLayout(邊界布局管理器)把容器分成東、西、南、北、中五個方位3.將組件添加到指定方位的步驟第一步:創(chuàng)建一個BorderLayout的對象第二步:為容器指定布局管理器
第三步:將組件添加到容器指定方位任務7.4構(gòu)建用戶管理系統(tǒng)界面4案例:編寫一個簡易計算器面教師演示計算器的界面原型如圖所示。包含一個編輯框和若干按鈕,編輯框位于上方,4行4列共16個按鈕大小相等技能點5:GridBagLayout的用法任務7.4構(gòu)建用戶管理系統(tǒng)界面41.GridBagLayout構(gòu)造方法
GridBagLayout():創(chuàng)建一個新的網(wǎng)格袋布局管理器類的對象2.成員方法(1)setConstraints(Componentcomp,GridBagConstraintsconstraints)功能:給comp組件設(shè)置constraints約束3.GridBagConstraints的常用屬性gridx,gridy,anchor等技術(shù)準備GridBagLayout(網(wǎng)格袋布局管理器)可以指定組件在容器中的位置(具體的某一行,某一列),而且組件的大小可以不相同,是一種比較靈活的布局管理器。GridBagLayout和GridBagConstraints一起使用,GridBagConstraints類指定使用GridBagLayout類布置的組件的約束。GridBagLayout的使用步驟第一步:創(chuàng)建GridBagLayout,GridBagConstraints的對象GridBagLayoutgbl=newGridBagLayout();GridBagConstraintsgbc=newGridBagConstraints();第二步:為容器指定布局panel.setLayout(gbl);第三步:給組件添加約束gbl.setConstraints(lblMsg,gbc);第四步:把受約束的組件添加到容器里任務7.4構(gòu)建用戶管理系統(tǒng)界面4案例:參照界面原型圖,用網(wǎng)格袋布局完善用戶登錄界面教師演示技能點6:實現(xiàn)單選按鈕任務7.4構(gòu)建用戶管理系統(tǒng)界面4實現(xiàn)單選按鈕的步驟:第一步:創(chuàng)建JRadioButton的對象第二步:創(chuàng)建ButtonGroup的對象第三步:將JRadioButton的對象添加到ButtonGoup中技術(shù)準備單選按鈕是在多個選項中選擇其中一個,因此必須對單選按鈕進行分組。要實現(xiàn)單選按鈕需要用到JRadioButton和ButtonGroup類。JRadioButton用于創(chuàng)建單選按鈕,ButtonGroup可實現(xiàn)單選按鈕的組對象。示例代碼:創(chuàng)建單選按鈕組,實現(xiàn)性別選擇JRadioButtonrbMale=newJRadioButton("男");JRadioButtonrbFemale=newJRadioButton("女");ButtonGroupbg=newButtonGroup();bg.add(rbFemale);bg.add(rbFemale);任務實施任務7.4構(gòu)建用戶管理系統(tǒng)界面3第一步:任務分析根據(jù)任務描述,本任務需要構(gòu)建七個界面,并為菜單項添加事件監(jiān)聽,實現(xiàn)點擊某一個菜單項,加載對應的面板。添加用戶信息面板采用的布局為網(wǎng)格袋布局,包含的組件及其相關(guān)的約束第二步:編寫添加用戶信息面板第三步:編寫修改用戶信息面板第四步:編寫其余五個界面,并添加事件監(jiān)聽第五步:調(diào)試運行程序AEBCD小組協(xié)作,完成任務評價測試任務7.4構(gòu)建用戶管理系統(tǒng)界面3評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目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
拓展提升——對話框的用法任務7.4構(gòu)建用戶管理系統(tǒng)界面31.選項對話框Swing包中JOptionPane類中包含一組static方法用于顯示簡單對話框。showMessageDialog():顯示一條消息并等待用戶點擊OKshowComfirmDialog():顯示一條消息并得到用戶確認(OK/Cancel)showOptionDialog():顯示一條消息并獲得用戶在一組選項中的選擇showInputDialog():顯示一條消息并獲得用戶輸入的一行文本2.文件對話框在一個應用中,常常會用到打開和保存文件。Swing中提供了JFileChoose類,通過該類的showOpenDialog()方法可以顯示打開文件對話框,showSaveDialog()方法可顯示保存文件對話框。拓展提升——打開文件的步驟:任務7.4構(gòu)建用戶管理系統(tǒng)界面3JFileChooserfileChooser=newJFileChooser();第一步:創(chuàng)建一個JFileChooser對象(1)設(shè)置當前打開路徑fileChooser.setMultiSelectionEnabled(true);(2)設(shè)置允許選擇多個文件fileChooser.setMultiSelectionEnabled(true);第二步:完成對話框?qū)傩缘脑O(shè)置intresult=fileChooser.showOpenDialog(this);第三步:顯示對話框if(result==JFileChooser.APPROVE_OPTION){Filefile=fileChooser.getSelectedFile();
//讀取文件內(nèi)容}第四步:獲得打開的文件任務7.4構(gòu)建用戶管理系統(tǒng)界面4案例:編寫一個簡單記事本,實現(xiàn)打開文件功能教師演示任務描述任務7.5用文件保存用戶信息3在任務7.1到任務7.4已經(jīng)實現(xiàn)創(chuàng)建用戶登錄界面和系統(tǒng)主界面,本任務實現(xiàn)用戶登錄成功后跳轉(zhuǎn)到系統(tǒng)主界面。當點擊添加用戶信息時,將輸入的用戶信息寫到user.dat文件中。具體任務任務7.5用文件保存用戶信息3技能點1:文件輸入流和輸出流JDK中提供了大量的輸入和輸出類庫,主要包含在java.io和java.nio中。字節(jié)流輸入流的基類InputStream,字節(jié)輸出流的基類OutputStream,字符輸入流的基類是Reader,字符輸出流的基類是Writer。常用的System.in和System.out也是流類,是InputStream類型,代表標準輸入流,也就是接收來自鍵盤的輸入。System.out是OutputStream的子類PrintStream類型,代表標準輸出流,也就是將數(shù)據(jù)輸出到屏幕。對文件進行讀寫時,常用到File類、FileInputStream、FileOutputStream、FileReader、FileWriter等類。技術(shù)準備任務7.5用文件保存用戶信息3技術(shù)準備——File類的用法1.File類File類中用于訪問文件或者目錄,提供了大量對文件操作相關(guān)的方法。File類的對象可以表示一個絕對路徑的文件對象,或者相對路徑的文件對象,也可以表示一個目錄。示例代碼:Filefile;//文件名file=newFile(“JavaFile”);//父和子路徑名file=newFile(“\\”,”JavaFile”);Filedir=newFile(“\\”);//File對象和路徑名file=newFile(dir,”JavaFile”);任務7.5用文件保存用戶信息3技能點2:隨機讀寫文件1.常用構(gòu)造方法(1)RandomAccessFile(Filefile,Stringmode)(2)RandomAccessFile(Stringname,Stringmode)2.常用成員方法(1)voidseek(longpos)(2)longgetFilePointer():返回文件指針的當前位置(3)longlength():以字節(jié)為單位返回文件長度(4)writeBytes(Strings):將s寫入文件在讀寫大文件時,才用從頭到尾順序讀寫效率會比較低,Java中RandomAccessFile類可以實現(xiàn)對文件進行隨機讀取。技術(shù)準備任務7.5用文件保存用戶信息3案例:在用戶登錄界面,當用戶登錄成功后,將用戶登錄情況(用戶名,登錄日期,登錄時間)寫入日志文件末尾教師演示第一步:任務分析實現(xiàn)將登錄日志寫入文件末尾需用到RandomAccessFile類,寫入信息包括用戶名和登錄日期和時間。第二步:編碼實現(xiàn)
RandomAccessFileraf=newRandomAccessFile("log.txt","rw");//創(chuàng)建解析日期和時間的對象SimpleDateFormatfmt=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");//獲取格式化的系統(tǒng)日期和時間字符串StringdateStr=fmt.format(newDate());raf.seek(raf.length());//將文件指針定位到日志文件末尾//將用戶名、登錄日期和時間寫入日志文件raf.writeBytes(name+":"+dateStr+"\n");技能點3:將對象寫入文件任務7.5用文件保存用戶信息3在Java中要實現(xiàn)從文件中讀寫對象,首先讀寫對象類要是序列號的類,需實現(xiàn)Serializable接口,其次用到java.io包中的ObjectOutputStream和ObjectInputStream類。1.序列化當想要永久存儲對象(寫入文件或者套接字)時,需要將對象轉(zhuǎn)換成字節(jié)流,當從文件或者網(wǎng)絡套接字讀取對象時,需要將字節(jié)流轉(zhuǎn)換成對象。將對象轉(zhuǎn)換成字節(jié)流的過程稱為序列化,將字節(jié)流轉(zhuǎn)換成對象的過程稱為反序列化。不是所有的對象都可以序列化的,可序列化的類必須實現(xiàn)Serializable接口,該接口沒有抽象方法,因此只需要在定義類時加上implementsSerializable即可。技術(shù)準備
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- N-Ethyl-4-methoxyamphetamine-hydrochloride-生命科學試劑-MCE-8599
- 2025年度商業(yè)門面使用權(quán)轉(zhuǎn)讓合同
- 2025年度電梯應急救援預案制定與演練合同
- 2025年度解除租賃合同解除條件爭議調(diào)解協(xié)議書
- 施工現(xiàn)場安全風險管控制度
- 科技發(fā)展趨勢宇宙生命探索與地球應用
- 個人房屋租賃給企業(yè)合同范例
- 兩子女離婚財產(chǎn)分割合同范本
- 2025屆畢業(yè)生就業(yè)實習合同協(xié)議
- 個人委托代理合同書樣本
- 二零二五版電商企業(yè)兼職財務顧問雇用協(xié)議3篇
- 課題申報參考:流視角下社區(qū)生活圈的適老化評價與空間優(yōu)化研究-以沈陽市為例
- 《openEuler操作系統(tǒng)》考試復習題庫(含答案)
- FZ/T 54007-2019錦綸6彈力絲
- DB11-T 291-2022日光溫室建造規(guī)范
- 2021-2022學年山東省淄博市高二(下)期末英語試卷(附答案詳解)
- 北師大版高中數(shù)學選修4-6初等數(shù)論初步全套課件
- 紀檢知識答題測試題及答案
- 創(chuàng)傷急救-止血、包扎課件
- 大數(shù)據(jù)背景下網(wǎng)絡輿情成因及治理
- 道教系統(tǒng)諸神仙位寶誥全譜
評論
0/150
提交評論