版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊6系統(tǒng)界面設(shè)計(jì)
——圖形界面設(shè)計(jì)及事件處理主要內(nèi)容學(xué)習(xí)目標(biāo)及重、難點(diǎn)1教學(xué)內(nèi)容2課堂、拓展實(shí)踐3小結(jié)4學(xué)習(xí)目標(biāo)及重點(diǎn)、難點(diǎn)學(xué)習(xí)目標(biāo)了解圖形界面的基礎(chǔ)知識(shí)掌握Swing編程步驟掌握容器的創(chuàng)建與使用掌握常用Swing組件的創(chuàng)建和使用掌握布局管理器的使用掌握事件處理機(jī)制重點(diǎn)容器的創(chuàng)建與使用布局管理器事件處理機(jī)制難點(diǎn)頁(yè)面的布局管理事件處理重、難點(diǎn);;;回顧Java基礎(chǔ)數(shù)據(jù)類型、運(yùn)算符、表達(dá)式分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)數(shù)組的創(chuàng)建與使用字符串的基本操作面向?qū)ο蠡A(chǔ)面向?qū)ο笏枷腩惖膭?chuàng)建與使用對(duì)象的創(chuàng)建與使用繼承、對(duì)象轉(zhuǎn)型、多態(tài)、接口集合容器set、List、Map引入前面的所有模塊中,用戶與系統(tǒng)的交互是通過(guò)控制臺(tái)輸入/輸出實(shí)現(xiàn),操作不方便,交互性不好。如何能像Windows界面操作那樣美觀、方便,實(shí)現(xiàn)交互功能?第一講
——Swing基礎(chǔ)及常用容器
使用NetBeans開(kāi)發(fā)Swing應(yīng)用程序圖形界面簡(jiǎn)介圖形用戶界面(Graphical
user
interface,稱GUI)是采用圖形方式顯示的計(jì)算機(jī)操作用戶界面,包括窗口、菜單、按鈕、工具欄和其他各種屏幕元素。Java中主要提供了兩個(gè)包為GUI設(shè)計(jì)提供豐富的功能,它們是AWT(java.awt)和Swing(javax.swing)。圖形界面簡(jiǎn)介1.AWTAWT是Java1.0提供的抽象視窗工具包,將處理用戶界面的任務(wù)交給操作系統(tǒng),由底層平臺(tái)負(fù)責(zé)創(chuàng)建圖形界面元素,AWT組件構(gòu)建的GUI程序受操作系統(tǒng)的影響,在不同平臺(tái)上進(jìn)行測(cè)試會(huì)有不同的結(jié)果顯示。2.SwingSwing是構(gòu)筑在AWT上層的一組GUI組件的集合,對(duì)于底層平臺(tái)的依賴更少。Swing中保留了AWT的事件處理、顏色、字體等處理。設(shè)計(jì)和實(shí)現(xiàn)圖形用戶界面主要有兩方面:創(chuàng)建組成界面的各個(gè)元素、設(shè)置它們的屬性、指定它們的位置,構(gòu)成完整的圖形用戶界面的外觀。定義圖形用戶界面的事件、確定界面各元素對(duì)不同事件的響應(yīng),實(shí)現(xiàn)與用戶的交互。圖形界面簡(jiǎn)介Swing編程簡(jiǎn)介Swing組件都是AWT的Container類的直接子類和間接子類,各類之間的關(guān)系如下。
java.awt.Component
-java.awt.Container
-java.awt.Window
-java.awt.Frame-javax.swing.JFrame
-javax.Dialog-javax.swing.JDialog
-javax.swing.JWindow
-java.awt.Applet-javax.swing.JApplet
-javax.swing.Box
-javax.swing.JcomponetJComponent類是大部分Swing組件的父類,它是抽象類,不能創(chuàng)建對(duì)象,但它包含了數(shù)百個(gè)函數(shù),Swing中的每個(gè)組件都可以使用這些函數(shù)。Swing編程簡(jiǎn)介使用NetBeans開(kāi)發(fā)Swing應(yīng)用程序的一般步驟:1.新建項(xiàng)目2.創(chuàng)建基于Swing的窗體3.Swing可視化設(shè)計(jì)4.設(shè)置窗體屬性5.進(jìn)行事件處理6.測(cè)試程序Swing容器組件-簡(jiǎn)介容器(Container)也是一個(gè)類,因此容器本身也是一個(gè)組件,具有組件的所有性質(zhì),但是它的主要功能是容納其它組件和容器。容器可以簡(jiǎn)化圖形化界面的設(shè)計(jì),以整體結(jié)構(gòu)來(lái)布置界面。所有的容器都可以通過(guò)add()方法向容器中添加組件。容器可以嵌套使用。Swing容器組件-簡(jiǎn)介頂層容器窗體JFrame、JWindow、JApplet、JDialog中間層容器面板JPanel、
滾動(dòng)窗格JScrollPane、JScrollBar、
拆分窗格JSplitPane、索查標(biāo)簽窗格JTabbedPane、JToolBar等特殊容器內(nèi)部窗體JInternalFrame、分層窗格JLayeredPane、根窗格JRootPaneSwing框架-JFrameJFrame是Swing程序的最外層窗口,它具有操作系統(tǒng)窗口的特性:最小化/最大化、關(guān)閉、改變大小、移動(dòng)等。JFrame類是Java.awt包中的Frame類的子類,該類在javax.swing包中在GUI編程中,一般至少有一個(gè)頂層窗體(JFrame、JDialog等)Swing框架-JFrameJFrame常用的構(gòu)造方法用:JFrame()
構(gòu)造一個(gè)初始時(shí)不可見(jiàn)的新窗體。JFrame(String
title)
創(chuàng)建一個(gè)新的、初始不可見(jiàn)的、具有指定標(biāo)題的窗體。Swing框架-JFrame常用方法與基本操作:add()將組件添加到窗體中。
is/setVisible()
獲取/設(shè)置窗體的可視狀態(tài),換句話說(shuō),是否在屏幕上顯示。
get/setTitle()獲取/設(shè)置窗體的標(biāo)題。
get/setState()獲取/設(shè)置窗體的最小化、最大化等狀態(tài)。
get/setLocation()獲取/設(shè)置窗體在屏幕上應(yīng)當(dāng)出現(xiàn)的位置。
get/setSize()獲取/設(shè)置窗體的大小。setDefaultCloseOperation(int
operation)設(shè)置點(diǎn)擊窗體上的關(guān)閉按鈕時(shí)的默認(rèn)操作setIconImage(Iconicon)方法設(shè)置窗口圖標(biāo)。getContentPane()獲取窗體的內(nèi)容面板DO_NOTHING_ON_CLOSE:當(dāng)窗口關(guān)閉時(shí),不做任何處理;HIDE_ON_CLOSE:當(dāng)窗口關(guān)閉時(shí),隱藏這個(gè)窗口;DISPOSE_ON_CLOSE:當(dāng)窗口關(guān)閉時(shí),隱藏并處理這個(gè)窗口;EXIT_ON_CLOSE:當(dāng)窗口關(guān)閉時(shí),退出程序。課堂演示-創(chuàng)建一個(gè)新窗體設(shè)置標(biāo)題方法1:屬性窗口:設(shè)置title屬性為“我的第一個(gè)Swing程序”方法2:添加代碼:this.setTitle("我的第一個(gè)Swing程序");設(shè)置尺寸方法1:屬性窗口-代碼:設(shè)置“窗體大小策略”為“生成調(diào)整大小代碼”
設(shè)置“窗體大小”的高度和寬度為300和200方法2:添加代碼:this.setSize(300,200);設(shè)置背景色
添加代碼:
this.getContentPane().setBackground(Color.red);設(shè)置SetDefaultCloseOperation
EXIT_ON_CLOSE17Swing對(duì)話框-JDialog對(duì)話框與框架(JFrame)有一些相似,但它一般是一個(gè)臨時(shí)的窗口,主要用于顯示提示信息或接受用戶輸入。對(duì)話框中一般不需要菜單條,也不需要改變窗口大小,用戶可以決定對(duì)話框的尺寸是否能被改變。在對(duì)話框出現(xiàn)時(shí),可以設(shè)定禁止其他窗口的輸入,直到這個(gè)對(duì)話框被關(guān)閉。構(gòu)造方法:JDialog(Dialogowner)構(gòu)造一個(gè)屬于Dialog組件的對(duì)話框,無(wú)模式,無(wú)標(biāo)題。JDialog(Dialogowner,booleanmodel)構(gòu)造一個(gè)屬于Dialog組件的對(duì)話框,有模式,無(wú)標(biāo)題。JDialog(Dialogowner,Stringtitle)構(gòu)造一個(gè)屬于Dialog組件的對(duì)話框,無(wú)模式,有標(biāo)題。JDialog(Dialogowner,Stringtitle,booleanmodel)構(gòu)造一個(gè)屬于Dialog組件的對(duì)話框,有模式,有標(biāo)題。CompanyLogoSwing對(duì)話框-JDialog常用成員方法有:getContentPane()返回此對(duì)話框的ContentPane對(duì)象。setDefaultCloseOperation(intoperation)設(shè)置當(dāng)用戶在此對(duì)話框上啟動(dòng)"close"時(shí)默認(rèn)執(zhí)行的操作。setJMenuBar(JMenuBarmenu)設(shè)置此對(duì)話框的菜單欄。一般對(duì)話框都會(huì)依附在某個(gè)JFrame窗口上,對(duì)話框通常是一個(gè)程序運(yùn)行的過(guò)程中與用戶互動(dòng)的中間過(guò)程。Swing對(duì)話框-JDialogSwing面板-JPanelJPanel是一般的輕量級(jí)容器,可以容納其他組件。與JPanel相比,JFrame用來(lái)制作桌面程序主框架窗口,是頂級(jí)窗體,而JPanel只是普通面板。JPanel可以放在JFrame中,反之,則不行。通常,組件不直接放入頂級(jí)窗體JFrame,而是先放入普通面板JPanel中,然后將JPanel放入頂級(jí)窗體JFrame。這樣使得Swing程序中的組件更具有層次,方便組件管理與布局。Swing面板-JPanel常用構(gòu)造方法:JPanel()
創(chuàng)建具有流布局的新面板。JPanel(LayoutManager
layout)
創(chuàng)建具有指定布局管理器的新面板。常用成員方法:add(Componentcomp)添加組件到面板中setBorder(Border
border)設(shè)置面板的邊框方法setBorder()中使用到的Border為邊界接口,通過(guò)BorderFactory類的相關(guān)createXXXBorder()方法可以創(chuàng)建其對(duì)象,并用來(lái)設(shè)置組件的邊框。如: JPaneljp1=newJPanel(); jp1.setBorder(BorderFactory.createTitledBorder("測(cè)試"));常用屬性border:設(shè)置邊框Swing面板-JPanelCompanyLogo存放工具欄組件的容器,工具欄中的組件通常是圖標(biāo)形式顯示的按鈕,組合框也是工具欄中的常用組件。常用構(gòu)造方法:JToolBar()JToolBar(Stringtitle)//工具欄處于浮動(dòng)狀態(tài)時(shí)窗口的標(biāo)題JToolBar(intorientation)//指定工具攔水平或垂直方向放置常用成員方法:add(Componentcomp)//增加組件到工具欄addSeparator()//在工具欄末尾添加一個(gè)分隔符工具欄上的組件調(diào)用下列方法可以為該命令設(shè)置提示信息:
setToolTipText(Stringtext)Swing工具欄-JToolBarCompanyLogo課堂實(shí)踐創(chuàng)建一個(gè)標(biāo)題為“我的第一個(gè)窗口”,大小為(300,200),位置居中的窗口。提示:在屬性窗口-代碼中選擇“生成中心”即可居中顯示。圖形界面基礎(chǔ)知識(shí)Swing編程的一般流程相對(duì)固定容器分為頂層容器和中間容器頂層容器一般只有一個(gè)小結(jié)CompanyLogo第二講
——Swing常用組件
使用NetBeans開(kāi)發(fā)Swing應(yīng)用程序掌握Swing常用組件的屬性設(shè)置及基本操作常用基本組件:JLabel//標(biāo)簽JTextField//文本字段JPasswordField//口令字段JTextArea//文本域JButton//按鈕JRadioButton//單選按鈕JCheckBox//復(fù)選框JList//列表JMenu//菜單學(xué)習(xí)內(nèi)容CompanyLogoSwing組件創(chuàng)建及使用的一般流程為:創(chuàng)建一個(gè)新組件添加組件到某一中間容器或頂層容器中對(duì)容器中的組件進(jìn)行布局管理對(duì)組件添加事件處理組件處理流程CompanyLogoSwing標(biāo)簽、文本與按鈕JLabel標(biāo)簽JTextField文本字段JPasswordField口令字段JButton按鈕JPanel面板JTextArea文本區(qū)域各組件/容器對(duì)象的屬性設(shè)置控件類型/變量名稱屬性名屬性值窗體JFrametitle用戶注冊(cè)界面代碼->窗體大小策略生成調(diào)整大小代碼->生成中心√面板jPanel1borderTitledBorder->標(biāo)題:用戶注冊(cè)標(biāo)簽jLabel1text用戶名:標(biāo)簽jLabel2text密碼:標(biāo)簽jLabel3text個(gè)人說(shuō)明:文本字段UserNameTexttext空,用于輸入用戶名口令字段PasswordTexttext空,用于輸入密碼echoChar*文本區(qū)域UserInfoText用于輸入個(gè)人說(shuō)明按鈕okButtontext提交按鈕cancleButtontext取消程序功能點(diǎn)擊“提交”按鈕:1、若沒(méi)有輸入用戶名或密碼2、輸入用戶名和密碼事件處理
privatevoidokButtonActionPerformed(java.awt.event.ActionEvent
evt){Stringusername=UserNameText.getText().trim();Stringpassword=PasswordText.getPassword().toString();if(username.equals("")||password.equals("")){
JOptionPane.showMessageDialog(this,"你還沒(méi)有輸入用戶名或密碼!");}else{
JOptionPane.showMessageDialog(this,"恭喜你注冊(cè)成功,你的用戶名為:"+username);System.exit(0);}}事件處理點(diǎn)擊“取消”按鈕:退出程序
privatevoidcancleButtonActionPerformed(java.awt.event.ActionEventevt){System.exit(0);}標(biāo)簽JLabel常用方法如下:get/setText():獲取/設(shè)置標(biāo)簽的文本。get/seticon():獲取/設(shè)置標(biāo)簽的圖片。get/setHorizontalAlignment():獲取/設(shè)置文本的水平位置。get/setVerticalAlignment():獲取/設(shè)置文本的垂直位置。get/setDisplayedMnemonic():獲取/設(shè)置標(biāo)簽的訪問(wèn)鍵(下劃線文字)。get/setLableFor():獲取/設(shè)置這個(gè)標(biāo)簽附著的組件,所以當(dāng)用戶按下Alt+訪問(wèn)鍵時(shí),焦點(diǎn)轉(zhuǎn)移到指定的組件。按鈕JButton
JButton的常用構(gòu)造方法有:JButton(Icon
icon)
創(chuàng)建一個(gè)帶圖標(biāo)的按鈕。JButton(String
text)
創(chuàng)建一個(gè)帶文本的按鈕。JButton(String
text,Icon
icon)
創(chuàng)建一個(gè)帶初始文本和圖標(biāo)的按鈕。JButton的常用成員方法有:get/setText()獲取/設(shè)置標(biāo)簽的文本。get/seticon()獲取/設(shè)置標(biāo)簽的圖片。get/setHorizontalAlignment()獲取/設(shè)置文本的水平位置。get/setVerticalAlignment()獲取/設(shè)置文本的垂直位置。get/setDisplayedMnemonic()獲取/設(shè)置訪問(wèn)鍵(下劃線字符),與Alt按鈕組合時(shí),造成按鈕單擊。文本框JTextField
JTextField是單行文本輸入框,主要用來(lái)接收用戶的輸入。JTextField的常用構(gòu)造方法為:JTextField()構(gòu)造一個(gè)列數(shù)為0的文本框。JTextField(intcolumns)構(gòu)造一個(gè)指定列數(shù)的文本框。JTextField(Stringtext)構(gòu)造一個(gè)指定文本的文本框。JTextField(Stringtext,intcolumns)構(gòu)造一個(gè)指定文本和列數(shù)的文本框。常用方法有:set/getText()設(shè)置/獲取文本框內(nèi)容。set/getFont(Fontf)設(shè)置/獲取當(dāng)前字體。set/getHorizontalAlignment()設(shè)置/獲取水平對(duì)齊方式。set/getColumns()設(shè)置/獲取JTextField
中的列數(shù)。密碼框JPasswordField
一種特殊類型的文本框,JPasswordField
是JTextField
的子類,其構(gòu)造方法也是類似的。用戶可以向密碼框中輸入文本并加以編輯,和文本框不同的是,向密碼框中輸入文本時(shí),顯示的不是實(shí)際輸入的文本,而是特殊的回顯字符(通常是‘*’)??梢允褂胹etEchoChar(charc)方法或設(shè)置它的echoChar屬性來(lái)改變?nèi)笔〉幕仫@字符。JPasswordField的構(gòu)造方法與JTextField的基本一致,常用成員方法中要注意的是JTextField獲取文本框中文本使用的是getText(),該方法返回的是一個(gè)String類型的對(duì)象;而要取得密碼框中的文本,使用方法getPassword(),該方法返回的是一個(gè)char數(shù)組。文本域JTextArea
JTextArea常用構(gòu)造方法有:JTextArea()構(gòu)造行數(shù)和列數(shù)為0的文本域。JTextArea(introws,intcolumns)構(gòu)造具有指定行數(shù)和列數(shù)的文本域。JTextArea(Stringtext)構(gòu)造具有初始文本的文本域。JTextArea(Stringtext,introws,intcolumns)構(gòu)造具有指定行數(shù)和列數(shù),并有初始文本的文本域。常用的成員方法有:append(String
str)
將給定文本追加到文檔結(jié)尾。insert(String
str,int
pos)
將指定文本插入指定位置。set/getColumns()
設(shè)置/獲取文本域的列數(shù)。set/getRows()
設(shè)置/獲取文本域的行數(shù)。set/getLineWrap()
設(shè)置/獲取文本區(qū)的換行策略。Set/getText()設(shè)置/獲取文本域內(nèi)容。setWrapStyleWord(boolean
word)
設(shè)置換行方式(如果文本區(qū)要換行)。課堂實(shí)踐-系統(tǒng)登錄界面設(shè)計(jì)程序界面:程序功能假定用戶名和密碼均為ccit,若沒(méi)有輸入用戶名和密碼,點(diǎn)擊“確定”后顯示如下圖若輸入的用戶名和密碼不正確,點(diǎn)擊“確定”后顯示如下圖程序功能若輸入正確用戶名和密碼,點(diǎn)擊“確定”后顯示如下圖點(diǎn)擊“退出”后退出程序綜合實(shí)踐(標(biāo)簽、文本框、按鈕)編寫一個(gè)實(shí)現(xiàn)加、減、乘、除四則運(yùn)算的計(jì)算器程序,用四個(gè)按鈕分別表示+、-、*、/運(yùn)算,在兩個(gè)文本框中輸入數(shù)據(jù),單擊按鈕后,在第三個(gè)文本框中顯示運(yùn)算結(jié)果。程序功能提示:編寫這個(gè)程序需要對(duì)四個(gè)按鈕的動(dòng)作事件做出響應(yīng),因?yàn)樗鼈兯幚淼氖录且恢碌模晕覀儾恍枰x4個(gè)事件,這里可以定義一個(gè)共同的動(dòng)作事件,在此事件處理代碼中,去區(qū)分是哪個(gè)按鈕被單擊了,并以此執(zhí)行相應(yīng)的運(yùn)算。開(kāi)啟/關(guān)閉按鈕JToggleButtonJTextArea文本區(qū)域JToggleButton開(kāi)啟/關(guān)閉按鈕程序功能單擊”設(shè)置背景”按鈕,將文本區(qū)域背景色設(shè)為紅色,并且,開(kāi)啟/關(guān)閉按鈕上的文本變?yōu)椤比∠尘啊眴螕簟比∠尘啊卑粹o,將文本區(qū)域背景紅色取消,重新設(shè)為白色,并且,開(kāi)啟/關(guān)閉按鈕上的文本變?yōu)椤痹O(shè)置背景”事件處理單選按鈕與復(fù)選框JRadioButton單選按鈕JComboBox組合框JCheckBox復(fù)選框JTextArea文本區(qū)域各組件/容器對(duì)象的屬性設(shè)置控件類型/變量名稱屬性名屬性值窗體JFrametitle個(gè)人問(wèn)卷調(diào)查resizablefalse面板jPanel1borderTitledBorder->標(biāo)題:請(qǐng)選擇標(biāo)簽jLabel1text性別標(biāo)簽jLabel2text愛(ài)好標(biāo)簽jLabel3text系別按鈕組buttonGroup1單選按鈕mailRadiolabel/text男單選按鈕femailRadiolabel/text女復(fù)選框singChecklabel/text唱歌復(fù)選框dancingChecklabel/text跳舞復(fù)選框netChecklabel/text上網(wǎng)復(fù)選框sportChecklabel/text運(yùn)動(dòng)組合框DepartmentCombomodel軟件學(xué)院
信息管理系
電子與電氣工程學(xué)院
機(jī)電系
藝術(shù)系
外語(yǔ)系
網(wǎng)絡(luò)通信學(xué)院selectedItem軟件學(xué)院文本區(qū)域resultText
用于顯示選擇結(jié)果事件處理-單選按鈕(選擇“性別”)添加性別單選按鈕的事件(ActionPerformed或ItemStateChanged或MouseClick等)代碼,當(dāng)用戶單擊性別男或性別女(單選按鈕)均會(huì)觸發(fā)如下事件。二者均可,只需一個(gè):性別單選按鈕的事件事件處理-復(fù)選框(選擇“愛(ài)好”)程序運(yùn)行后,當(dāng)用戶單擊“愛(ài)好”JCheckBox中的任何一個(gè)控件時(shí),都將觸發(fā)interestingItemStateChanged事件。該事件將讀取選擇的愛(ài)好信息并將其顯示在JTextArea中。其中flag為全局變量(boolean型),控制“愛(ài)好”顯示格式事件處理-組合框(選擇“系別”)單選按鈕JRadioButton
JRadioButton的構(gòu)造方法有:JRadioButton(Icon
icon)
創(chuàng)建一個(gè)初始未選擇、具有指定的圖像單選按鈕。JRadioButton(Icon
icon,boolean
selected)
創(chuàng)建一個(gè)具有指定圖像和選擇狀態(tài)的單選按鈕JRadioButton(String
text)
創(chuàng)建一個(gè)具有指定文本的狀態(tài)為未選擇的單選按鈕。JRadioButton(String
text,boolean
selected)
創(chuàng)建一個(gè)具有指定文本和選擇狀態(tài)的單選按鈕。JRadioButton(String
text,Icon
icon)
創(chuàng)建一個(gè)具有指定的文本和圖像并初始化為未選擇的單選按鈕JRadioButton(String
text,Icon
icon,boolean
selected)
創(chuàng)建一個(gè)具有指定的文本、圖像和選擇狀態(tài)的單選按鈕。常用成員方法有:setSeletcted(booleanselected)設(shè)置按鈕是否被選中isSelected()返回單選按鈕的當(dāng)前狀態(tài)復(fù)選框JCheckBox
JCheckBox的構(gòu)造方法有:JCheckBox()
創(chuàng)建一個(gè)沒(méi)有文本、沒(méi)有圖標(biāo)并且最初未被選定的復(fù)選框。JCheckBox(Icon
icon)
創(chuàng)建有一個(gè)圖標(biāo)、最初未被選定的復(fù)選框。JCheckBox(Icon
icon,boolean
selected)
創(chuàng)建一個(gè)帶圖標(biāo)的復(fù)選框,并指定其最初是否處于選定狀態(tài)JCheckBox(String
text)創(chuàng)建一個(gè)帶文本的、最初未被選定的復(fù)選框。JCheckBox(String
text,boolean
selected)
創(chuàng)建一個(gè)帶文本的復(fù)選框,并指定其最初是否處于選定狀態(tài)。JCheckBox(String
text,Icon
icon)
創(chuàng)建帶有指定文本和圖標(biāo)的、最初未選定的復(fù)選框。JCheckBox(String
text,Icon
icon,boolean
selected)創(chuàng)建一個(gè)帶文本和圖標(biāo)的復(fù)選框,并指定其最初是否處于選定狀態(tài)常用成員方法有:setSeletcted(booleanselected)設(shè)置按鈕是否被選中isSelected()返回單選按鈕的當(dāng)前狀態(tài)組合框JComboBoxJComboBox的構(gòu)造方法JComboBox():構(gòu)造一個(gè)JComboBoxJComboBox(finalObjectitems[]):構(gòu)造一個(gè)JComboBox,以數(shù)組items為選項(xiàng).JComboBox(Vectoritems):構(gòu)造一個(gè)JComboBox,以向量items為選項(xiàng)JComboBox(ComboBoxModelmodel):構(gòu)造一個(gè)JComboBox,以model為模型組合框JComboBox常用方法voidaddItem():添加一個(gè)選項(xiàng)voidinsertItemAt(Object
anObject,int
index)在項(xiàng)列表中的給定索引處插入項(xiàng)。voidremoveItem(Object
anObject)從項(xiàng)列表中移除項(xiàng)。voidremoveItemAt(int
anIndex)移除anIndex
處的項(xiàng)。ObjectgetItemAt(inti):返回位置i處的選項(xiàng)int
getItemCount():返回選項(xiàng)總數(shù)int
getSelectIndex():返回選中的選項(xiàng)位置ObjectgetSelectedItem():返回選中的選項(xiàng)voidsetEditable(Boolean
aFlag):設(shè)置可修改課堂實(shí)踐實(shí)現(xiàn)一個(gè)市場(chǎng)調(diào)查程序,功能如圖所示。主界面點(diǎn)擊“提交”后JList可以讓用戶在多個(gè)條目中作出選擇,選擇模式可以是單一選擇、連續(xù)選擇、多項(xiàng)選擇選擇模式對(duì)應(yīng)于
ListSelectionModel
中的3個(gè)常量:SINGLE_SELECTION只能選擇一條。SINGLE_INTERVAL_SELECTION按住[Shift]鍵可選擇聯(lián)系的區(qū)間。MULTIPLE_INTERVAL_SELECTION按住[Ctrl]鍵可選擇多條。
常用組件-JListCompanyLogo構(gòu)造方法:JList(ListModelmodel)構(gòu)造一個(gè)指定模式的JList對(duì)象JList(Object[]items)利用數(shù)組對(duì)象構(gòu)造一個(gè)JList對(duì)象JList(Vectoritems)利用Vector對(duì)象構(gòu)造一個(gè)JList對(duì)象常用方法:int
getSelectedIndex()返回列表中的第一個(gè)被選擇的項(xiàng)目的索引,-1表示沒(méi)有項(xiàng)目被選。ObjectgetSelectedValue()返回JList列表中的第一個(gè)被選擇的項(xiàng)目的名字。isSelectedIndex(int
index)判斷第index項(xiàng)是否被選。setSelectedIndex(int
index)選擇第index項(xiàng)。setSelectionMode(int
selectionMode)設(shè)置列表的選擇模式常用組件-JListCompanyLogo示例JList列表課堂實(shí)踐JList列表JTextArea文本域程序主界面課堂實(shí)踐-功能實(shí)現(xiàn)“添加”按鈕:將左側(cè)列表中選中的部門加入到右側(cè)的文本區(qū)域,若右側(cè)的文本區(qū)域已經(jīng)存在該部門,則不加入并提示”已存在”的信息.課堂實(shí)踐-功能實(shí)現(xiàn)“刪除”按鈕:將左側(cè)列表中選中的部門從右側(cè)的文本區(qū)域中刪除,若右側(cè)的文本區(qū)域沒(méi)有該部門,則提示”沒(méi)有該部門”的信息.每個(gè)菜單組件包括一個(gè)菜單條(JMenuBar),每個(gè)JMenuBar由若干個(gè)菜單項(xiàng)(JMenu)組成每個(gè)JMenu又由若干個(gè)子菜單項(xiàng)(JMenuItem)組成。JFrame提供下列方法設(shè)置菜單欄:
voidsetJMenuBar(JMenuBar
mb)示例:
JFrameframe=newJFrame();
JMenuBar
mb=newJMenuBar();
f.setMenuBar(mb);常用組件-菜單CompanyLogo一個(gè)窗體中最多只能有一個(gè)JMenuBar構(gòu)造方法:JMenuBar()創(chuàng)建一個(gè)菜單欄常用方法:JMenuadd(JMenumenu)添加指定菜單到菜單欄JMenugetMenu(intindex)返回指定的菜單項(xiàng)intgetMenuCount()返回菜單的總數(shù)常用組件-JMenuBarCompanyLogo構(gòu)造方法:JMenu()創(chuàng)建一個(gè)沒(méi)有標(biāo)題的菜單JMenu(Strings)創(chuàng)建標(biāo)題為s的菜單常用方法:JMenuItemadd(JMenuItemitem)將菜單項(xiàng)item加入菜單末尾voidaddSeperator()向菜單添加一個(gè)分隔符voidremove(intindex)刪除索引為index的菜單項(xiàng)voidremove(JMenuItemitem)刪除指定菜單項(xiàng)JMenuItemadd(JMenuItemitem,intindex)向指定位置插一個(gè)菜單項(xiàng)常用組件-JMenuCompanyLogo構(gòu)造方法:JMenuItem(Stringtext)創(chuàng)建一個(gè)標(biāo)題為text的菜單項(xiàng)JMenuItem(Stringtext,Iconicon)創(chuàng)建帶圖標(biāo)和文本的菜單
常用方法:voidsetText(Stringlab)設(shè)定標(biāo)題為labvoidsetEnabled(booleanb)設(shè)定菜單項(xiàng)是否可用,true可用,false為不可用voidsetAccelerator(KeyStrokekey)指定菜單上的快捷鍵常用組件-JMenuItemCompanyLogo⑴創(chuàng)建一個(gè)菜單欄,并將菜單欄置于窗體中⑵在菜單欄中添加菜單⑶在菜單中添加菜單項(xiàng)課堂演示CompanyLogo按要求完成如下圖所示的界面。課堂實(shí)踐CompanyLogo事件處理編輯菜單—剪切編輯菜單—復(fù)制事件處理編輯菜單—粘貼事件處理編輯菜單—?jiǎng)h除、全選、時(shí)間/日期事件處理格式菜單—字體、字形、字號(hào)事件處理格式菜單—文本顏色思考:文件菜單的實(shí)現(xiàn)?常用組件的使用步驟創(chuàng)建組件對(duì)象設(shè)置相關(guān)屬性添加到容器中小結(jié)第三講
——布局管理器
使用NetBeans開(kāi)發(fā)Swing應(yīng)用程序引入在上一講的課堂實(shí)踐中,設(shè)計(jì)界面時(shí)該如何布局比較合理?布局管理器的相關(guān)基礎(chǔ)知識(shí)FlowLayoutBorderLayoutGridLayoutCardLayoutnull單元學(xué)習(xí)內(nèi)容CompanyLogoJava為了實(shí)現(xiàn)跨平臺(tái)的特性并且獲得動(dòng)態(tài)的布局效果,將容器內(nèi)的所有組件的大小、位置、順序、間隔等交給“布局管理器”負(fù)責(zé)管理。不同的布局管理器使用不同算法和策略,程序可以選擇不同的布局管理器來(lái)決定布局,主要有FlowLayout,BorderLayout,GridLayout,CardLayout,BoxLayou,GridBagLayout,null等。通過(guò)容器組件的setLayout()方法可以設(shè)定容器中組件排放策略,如:setLayout(newBorderLayout());setLayout(null);布局管理器80布局管理器布局管理器主要負(fù)責(zé)以下幾個(gè)方面:確定容器的全面尺寸;確定容器內(nèi)各元素的大小;確定容器內(nèi)各元素的位置;確定元素間的間隔距離。布局管理器決定容器中組件的排列方式,布局管理器都實(shí)現(xiàn)了接口LayoutManager接口,可以使用LayoutManager的變量來(lái)存儲(chǔ)它們中的任何一個(gè)。流式布局管理器—FlowLayoutFlowLayout
是JPanel、JApplet的缺省布局管理器。其組件的放置規(guī)律是從上到下、從左到右進(jìn)行放置。當(dāng)容器的大小發(fā)生變化時(shí),用FlowLayout管理的組件會(huì)發(fā)生變化,其變化規(guī)律是:組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化。如圖中有三個(gè)按鈕都處于同一行,但是如果把該窗口變窄,窄到剛好能夠放下一個(gè)按鈕,則第二個(gè)按鈕將折到第二行,第三個(gè)按鈕將折到第三行。按鈕"Open"本來(lái)在按鈕"OK"的右邊,但是現(xiàn)在跑到了下面,所以說(shuō)"組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化"。81流布局管理器—FlowLayout構(gòu)造方法:FlowLayout()
居中對(duì)齊,水平和垂直間距為5像素的流布局管理器。FlowLayout(int
align)
指定對(duì)齊方式,水平和垂直間距為5像素的流布局管理器。FlowLayout(int
align,int
hgap,int
vgap)指定對(duì)齊方式及水平和垂直間距的流布局管理器。82常用方法intgetHgap()//返回組件的水平間隔voidsetHgap(inthgap)()//設(shè)定組件的水平間隔intgetVgap()//返回組件的垂直間隔voidsetVgap(inthgap)//設(shè)定組件的垂直間隔intgetAlignment()//返回組件的對(duì)齊方式voidsetAlignment(intalign)//設(shè)定組件的對(duì)齊方式示例—FlowLayoutBorderLayout是JWindow,JFrame和JDialog的缺省布局管理器。BorderLayout布局管理器把容器分成5個(gè)區(qū)域:North,South,East,West和Center,每個(gè)區(qū)域只能放置一個(gè)組件。使用BorderLayout的時(shí)候,如果容器的大小發(fā)生變化,其變化規(guī)律為:組件的相對(duì)位置不變,大小發(fā)生變化。例如容器變高了,則North、South區(qū)域不變,West、Center、East區(qū)域變高;如果容器變寬了,West、East區(qū)域不變,North、Center、South區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域(West、East、North、South區(qū)域)沒(méi)有組件,則由Center區(qū)域去補(bǔ)充,但是如果Center區(qū)域沒(méi)有組件,則保持空白:邊界布局管理器—BorderLayoutCenterNorthSouthWestEast邊界布局管理器—BorderLayout構(gòu)造方法BorderLayout()//建立一個(gè)BorderLayout對(duì)象,組件間隔默認(rèn),水平垂直為0。BorderLayout(int
hgap,int
vgap)//建立一個(gè)BorderLayout對(duì)象,參數(shù)設(shè)定水平垂直間隔。常用方法int
getHgap()//返回組件水平間隔voidsetHgap(int
hgap)//設(shè)定組件水平間隔int
getVgap()//返回組件垂直間隔voidsetVgap(int
vgap)//設(shè)定組件垂直間隔
85新建窗體,在窗體中添加三個(gè)按鈕,分別使用FlowLayout和BorderLayout進(jìn)行布局管理.對(duì)兩種布局特點(diǎn)進(jìn)行總結(jié)課堂實(shí)踐CompanyLogo網(wǎng)格布局管理器—GridLayout使容器中各個(gè)組件呈網(wǎng)格狀布局,平均占據(jù)容器的空間,將容器空間劃分成nxm的大小相同的小格,每格區(qū)間放一個(gè)組件,按序存放(從左至右,從上至下)。示例:JFramef=newJFrame(“GridLayout”);
f.setLayout(newGridLayout(2,3));
//容器平均分成2行3列共6格
f.add(newJButton("1"));//添加到第一行的第一格
f.add(newJButton("2"));//添加到第一行的下一格
...
f.add(newJButton("6"));//添加到第二行的第三格87網(wǎng)格布局管理器—GridLayout構(gòu)造方法GridLayout()//建立一個(gè)GridLayout對(duì)象,在一行中排列組件,組件之間的默認(rèn)間隔為0GridLayout(int
rows,intcols)//建立一個(gè)GridLayout對(duì)象,將容器分為rows行,cols列,組件之間的水平和垂直間隔為0GridLayout(int
rows,int
cols,int
hgap,int
vgap)//建立一個(gè)GridLayout對(duì)象,將容器分為rows行,cols列,設(shè)定組件之間的水平和垂直間隔常用方法int
getColumns()//返回設(shè)定列數(shù)voidsetColumns(intcols)//設(shè)定列數(shù)int
getRows()//返回設(shè)定行數(shù)voidsetRows(introws)//設(shè)定行數(shù)int
getHgaps()//返回設(shè)定水平間隔voidsetHgaps(int
hgap)//設(shè)定水平間隔int
getVgap()//返回設(shè)定垂直間隔voidsetVgap(int
vgap)//設(shè)定垂直間隔88卡片布局管理器—CardLayoutCardLayout將容器中的所有組件象撲克牌一樣堆疊在一起,每次只能看到最上面的一張,要看到別的,要用相關(guān)
方法。構(gòu)造方法CardLayout()//建立一個(gè)CardLayout對(duì)象,組件之間間隔默認(rèn)為0CardLayout(int
hgap,int
vgap)//建立一個(gè)CardLayout對(duì)象,組件之間設(shè)定間隔89常用方法voidfirst(Containercont)//顯示容器cont的第一個(gè)對(duì)象voidlast(Containercont)//顯示容器cont的最后一個(gè)對(duì)象voidnext(Containercont)//顯示容器cont的下一個(gè)對(duì)象voidprevious(Containercont)//顯示容器cont的前一個(gè)對(duì)象voidshow(Containercont,Stringname)//顯示容器cont中名為name的對(duì)象intgetHgap()//返回組件水平間隔voidsetHgap(inthgap)//設(shè)定組件水平間隔intgetVgap()//返回組件垂直間隔voidsetVgap(inthgap)//設(shè)定組件水平間隔卡片布局管理器—CardLayoutCompanyLogo91null稱為無(wú)布局管理器。可以隨心所欲安排容器,但是跨平臺(tái)時(shí),可能發(fā)生變化。容器的嵌套
容器中再添加容器,這樣就形成了容器的嵌套。示例:
f=newFrame(“GUIexample3”);
bw=newButton(“West”);
bc=newButton("Workspaceregion");
f.add(bw,BorderLayout.WEST);
f.add(bc,BorderLayout.CENTER);
p=newPanel();
f.add(p,"North");
bfile=newButton("File");
bhelp=newButton("Help");
p.add(bfile); p.add(bhelp);
f.pack();
f.setVisible(true);容器的嵌套92課后實(shí)踐CompanyLogo設(shè)計(jì)一個(gè)簡(jiǎn)易計(jì)算器,并實(shí)現(xiàn)基本功能。小結(jié)JFrame的缺省布局管理器為BorderLayout。JPanel
的缺省布局管理器為FlowLayout。當(dāng)把JPanel
作為一個(gè)組件添加到某個(gè)容器中后,該JPanel
仍然可以有自己的布局管理器。因此,可以利用JPanel
使得BorderLayout
中某個(gè)區(qū)域顯示多個(gè)組件,達(dá)到設(shè)計(jì)復(fù)雜用戶界面的目的。如果采用無(wú)布局管理器setLayout(null),則必須使用setLocation(),setSize(),setBounds()等方法手工設(shè)置組件的大小和位置,此方法會(huì)導(dǎo)致平臺(tái)相關(guān),不鼓勵(lì)使用。
94第四講
——事件處理機(jī)制使用NetBeans開(kāi)發(fā)Swing應(yīng)用程序回顧與引入CompanyLogo常用容器Swing常用組件布局管理器輸入用戶名和密碼后,單擊“確定”,能做出正確判斷和響應(yīng)?事件處理基本原理事件處理步驟事件監(jiān)聽(tīng)器類定義事件響應(yīng)處理事件適配器單元學(xué)習(xí)內(nèi)容CompanyLogo圖形用戶界面識(shí)別和區(qū)分鼠標(biāo)和鍵盤的操作并做出相應(yīng)的反映。Java語(yǔ)言將每一個(gè)鍵盤或鼠標(biāo)的操作定義為一個(gè)“事件”,在編程中只需定義每個(gè)特定事件發(fā)生時(shí)程序應(yīng)該做出何種響應(yīng)即可。這是圖形用戶界面中的“事件”和“事件響應(yīng)”事件處理模型CompanyLogo除了鼠標(biāo)和鍵盤的操作,圖形界面等元素都可以引發(fā)事件,系統(tǒng)對(duì)這些事件分別定義處理代碼,以保證系統(tǒng)有序地工作。事件處理模型Java的事件處理機(jī)制:一個(gè)產(chǎn)生事件的對(duì)象必須設(shè)定其事件處理的監(jiān)聽(tīng)者對(duì)象(Listener),當(dāng)事件發(fā)生時(shí),監(jiān)聽(tīng)者便會(huì)依據(jù)事件的類型來(lái)執(zhí)行相應(yīng)的程序。要能夠讓圖形界面接收用戶的操作,就必須給各個(gè)組件加上事件處理機(jī)制。在事件處理的過(guò)程中,主要涉及幾類對(duì)象:EventSource—事件源,事件發(fā)生的場(chǎng)所,通常就是可以激發(fā)事件的各個(gè)組件,例如按鈕、文本框等。Event—事件,用戶對(duì)界面操作在java語(yǔ)言上的描述,以類的形式出現(xiàn),例如鍵盤操作對(duì)應(yīng)的事件類是KeyEvent。Eventhandler—事件處理者,接收事件對(duì)象并對(duì)其進(jìn)行處理的對(duì)象。99事件及處理機(jī)制組件(事件源)觸發(fā)一個(gè)相應(yīng)類型的事件此事件由相應(yīng)類型的Listener(事件監(jiān)聽(tīng)者)接收并處理當(dāng)事件發(fā)生時(shí),監(jiān)聽(tīng)者根據(jù)事件的類型來(lái)執(zhí)行相應(yīng)的程序。100Button1事件源接收事件e,并做處理ActionListener事件監(jiān)聽(tīng)者創(chuàng)建ActionEvente單擊通過(guò)調(diào)用源對(duì)象的addActionListener()方法將監(jiān)聽(tīng)器連接到事件源上一個(gè)事件監(jiān)聽(tīng)器對(duì)象需和某個(gè)事件源的某種事件進(jìn)行關(guān)聯(lián),這稱為向事件源注冊(cè)事件監(jiān)聽(tīng)器對(duì)象。使用授權(quán)處理模型進(jìn)行事件處理的一般方法歸納如下:⑴對(duì)于某一類型的事件XXXEvent,要想接收并處理這類事件,必須定義相應(yīng)的事件監(jiān)聽(tīng)器類,該類需要實(shí)現(xiàn)與該事件相對(duì)應(yīng)的接口XXXListener;⑵事件源實(shí)例化以后,必須進(jìn)行授權(quán),注冊(cè)該類事件的監(jiān)聽(tīng)器,使用事件源.addXXXListener(XXXListener)
方法來(lái)注冊(cè)監(jiān)聽(tīng)器。
事件及處理機(jī)制CompanyLogo事件及處理機(jī)制CompanyLogo事件類層次結(jié)構(gòu)CompanyLogo所有事件的父類事件處理步驟1.根據(jù)需要定義相應(yīng)類型的監(jiān)聽(tīng)者類,在類的定義中完成事件的處理;2.創(chuàng)建事件監(jiān)聽(tīng)者對(duì)象;3.為將會(huì)觸發(fā)事件的組件C注冊(cè)相應(yīng)的事件監(jiān)聽(tīng)者對(duì)象(使用C的addXXXListener()方法)。104實(shí)現(xiàn)相應(yīng)的監(jiān)聽(tīng)接口105AWT事件監(jiān)聽(tīng)器及接口定義事件監(jiān)聽(tīng)器的幾種方法自身類作為事件監(jiān)聽(tīng)器在類頭部加上“implements監(jiān)聽(tīng)接口”,類體中實(shí)現(xiàn)接口中的方法,完成事件處理。監(jiān)聽(tīng)對(duì)象可以使用this表示外部類作為事件監(jiān)聽(tīng)器定義一個(gè)獨(dú)立的類實(shí)現(xiàn)監(jiān)聽(tīng)接口,完成事件處理創(chuàng)建類的對(duì)象表示監(jiān)聽(tīng)對(duì)象匿名內(nèi)部類作為事件監(jiān)聽(tīng)器注冊(cè)監(jiān)聽(tīng)對(duì)象時(shí),直接創(chuàng)建監(jiān)聽(tīng)對(duì)象并給出類體實(shí)現(xiàn)事件處理內(nèi)部類作為事件監(jiān)聽(tīng)器將監(jiān)聽(tīng)類定義放到自身類內(nèi)部定義
107定義事件監(jiān)聽(tīng)器說(shuō)明可以聲明多個(gè)接口,接口之間用逗號(hào)隔開(kāi)……implementsMouseMotionListener,MouseListener,WindowListener;可以由同一個(gè)對(duì)象監(jiān)聽(tīng)一個(gè)事件源上發(fā)生的多種事件:f.addMouseMotionListener(this);f.addMouseListener(this);f.addWindowListener(this);
則對(duì)象f上發(fā)生的多個(gè)事件都將被同一個(gè)監(jiān)聽(tīng)器接收和處理。定義事件監(jiān)聽(tīng)器說(shuō)明可以通過(guò)事件對(duì)象獲得詳細(xì)資料,比如本例中就通過(guò)事件對(duì)象獲得了鼠標(biāo)發(fā)生時(shí)的坐標(biāo)值。publicvoidmouseDragged(MouseEvente){
Strings="Mousedragging:X="+e.getX()+"Y="+e.getY();
tf.setText(s);}無(wú)論實(shí)現(xiàn)了幾個(gè)接口,接口中已聲明的方法必須一一實(shí)現(xiàn),如果對(duì)某事件不感興趣,可以不具體實(shí)現(xiàn)其方法,而用空的方法體來(lái)代替。108109注冊(cè)事件監(jiān)聽(tīng)器要使組件能夠響應(yīng)相應(yīng)事件,必須將該組件注冊(cè)到監(jiān)聽(tīng)器上。一個(gè)組件可以注冊(cè)多個(gè)監(jiān)聽(tīng)器。AWT的組件類中提供注冊(cè)和注銷監(jiān)聽(tīng)器的方法:注冊(cè)監(jiān)聽(tīng)器:
publicvoidadd<ListenerType>(<ListenerType>
listener);注銷監(jiān)聽(tīng)器:
publicvoidremove<ListenerType>(<ListenerType>
listener);
110按鈕單擊事件示例importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classButtonHandlerimplementsActionListener{ publicvoidactionPerformed(ActionEvent
argo){
System.out.println("按鈕被按下"); }}publicclassEventDemo{ public
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云計(jì)算平臺(tái)合作運(yùn)營(yíng)協(xié)議
- 寵物護(hù)理與健康承諾書(shū)
- 健康生活社區(qū)物業(yè)服務(wù)合同
- 世界歷史中的大事件解讀
- 二零二五年度大數(shù)據(jù)分析與應(yīng)用技術(shù)服務(wù)合同范本5篇
- “民族地區(qū)現(xiàn)代化與建設(shè)中華民族現(xiàn)代文明”學(xué)術(shù)研討會(huì)綜述
- 2025年度物業(yè)管理合同服務(wù)內(nèi)容詳述2篇
- 商標(biāo)權(quán)許可協(xié)議
- 商丘雨季施工方案
- 2024年豪華私人游艇租賃與維護(hù)服務(wù)合同3篇
- 2025重癥醫(yī)學(xué)科護(hù)理工作計(jì)劃
- 團(tuán)隊(duì)建設(shè)與執(zhí)行力課件
- 營(yíng)銷課件教學(xué)課件
- 2024時(shí)事政治考試100題及參考答案
- 醫(yī)療廢物轉(zhuǎn)移實(shí)施方案
- (賽斯資料)健康之道(全本)
- 工程師個(gè)人年終總結(jié)
- 【學(xué)易金卷】2023-2024學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)期末全真模擬提高卷(三)(A4版)(北師大版)
- GB 17353-2024摩托車和輕便摩托車防盜裝置
- 學(xué)校膳食管理委員會(huì)工作制度和職責(zé)
- 房租收條格式(3篇)
評(píng)論
0/150
提交評(píng)論