




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第八章圖形用戶界面8.1Java的圖形用戶界面簡介8.2基本用戶界面8.3組件布局管理器8.4事件處理8.5高級(jí)圖形用戶界面圖形用戶界面(GUI)是一種方便的人機(jī)界面,它通過圖形的方式,借助菜單、按鈕等圖形界面組件和鼠標(biāo)操作,在用戶和計(jì)算機(jī)之間進(jìn)行交互。構(gòu)成GUI的基本要素是組件,組件分為基本的控制組件和容器。組件(component)是構(gòu)成GUI的基本要素,通過對(duì)不同事件的響應(yīng)來完成和用戶的交互或組件之間的交互。組件一般作為一個(gè)對(duì)象放置在容器(Container)中。容器是能容納和排列組件的組件,要顯示組件,用戶必須把它放置在容器里,通過容器的add()方法將組件加入到容器中。容器本身也是組件,因此可以將一個(gè)容器添加到另一個(gè)容器中實(shí)現(xiàn)容器的嵌套。8.1Java的圖形用戶界面簡介Java的GUI功能主要包含在java.awt包和javax.swing包中。Java抽象窗口工具包AWT(AbstractWindowToolkit)是java圖形界面的工具箱。其中有一些類不是使用java語言寫的,因此并沒有達(dá)到真正的平臺(tái)獨(dú)立。為了實(shí)現(xiàn)真正的平臺(tái)獨(dú)立,產(chǎn)生了Swing包。Swing完全用Java語言編寫,Swing界面在不同的平臺(tái)上外觀完全一樣,真正做到了平臺(tái)獨(dú)立。Swing提供了更完整的組件,引入了許多新的特性和功能。所有的Swing組件都以J開頭,以便與老的AWT組件區(qū)分。Swing包定義了頂層容器和其它容器兩種類型的組件。JWindow、JFrame、JDialog和JApplet都是頂層容器,它們分別是容器Window、Frame、Dialog和Applet的子類;其它容器是由JComponent組件類派生的子類如JButton、JPanel和JMenu等。頂層容器和其它容器的區(qū)別是:它包含一個(gè)內(nèi)容面板,Swing組件可以加入到內(nèi)容面板里面,但不能直接加入到頂層容器中。ComponentContainerAWT組件(Button等)WindowJComponentPanelJAppletJFrameJWindowJDialogJlabel,Jpanel,Jbutton等AppletFrameDialogAWT、Swing組件的層次繼承關(guān)系java.awt
包含所有制作用戶界面及繪圖、圖像所需的類
java.awt.color
處理顏色的類
java.awt.datatransfer
提供在應(yīng)用軟件內(nèi)及其間數(shù)據(jù)轉(zhuǎn)換所需的類
java.awt.dnd
提供拖(drag)及放(drop)處理
java.awt.event
事件處理
java.awt.font
關(guān)于字型的類
java.awt.geom
提供定義及操作2D幾何對(duì)象所需的Java2D類
java.awt.im
輸入方法結(jié)構(gòu)類
java.awt.im.spi
提供界面供開發(fā)輸入方法,可用于任何執(zhí)行階段環(huán)境
java.awt.image
圖像處理類
java.awt.image.renderable
制造rendering-independent圖像所需的類
java.awt.print
處理打印的類
AWT是由下列包所組成的。GUI接口的建立步驟①建立元件:在構(gòu)造方法中,使用new()方法,通過構(gòu)造方法的參數(shù)進(jìn)行初始化。同時(shí)通過getContentPane獲取容器的句柄。②加入容器中:在構(gòu)造方法中,使用容器句柄.add(元件)將元件加入容器中。③配置版面:在構(gòu)造方法中,通過容器.setXXX(XXX),元件.setXXX(XXX),JFrame.setXXX(XXX)方法進(jìn)行版面格式的配置。④處理事件:在構(gòu)造方法中,使用元件.addXXXListener()加入事件處理器。⑤在構(gòu)造方法外部定義事件處理器的功能。8.2基本用戶界面8.2.1基本用戶界面簡介8.2.2標(biāo)簽8.2.3按鈕8.2.4選項(xiàng)框8.2.5復(fù)選框和單選按鈕8.2.6列表框8.2.7文本框8.2.8文本區(qū)8.2.9滾動(dòng)條8.2.1基本用戶界面簡介Swing基本組件都是JComponent類的子類,這些組件可獨(dú)立存在于Applet和Application中,提供了小巧靈活的交互功能。JComponent類包含了一些方法來設(shè)置組件的屬性,如:改變背景顏色、定義顯示文本的字體等。JComponent的常用方法如下:
方法 作用voidsetBackground(Colorc) 設(shè)置組件的背景顏色voidsetForeground(Colorc) 設(shè)置組件的前景顏色voidsetFont(Fontf) 設(shè)置組件的字體voidisVisible() 檢查組件是否可見。組件初始為可見, 但頂層容器JFrame是個(gè)例外voidsetVisible(booleanb) 根據(jù)參數(shù)b的值顯示或隱藏組件voidsetEnable(booleanb) 啟用或禁止一個(gè)組件(默認(rèn)是可使用狀態(tài))voidisEnable 檢查該組件是否正顯示在容器中voidsetLocation(intx,inty)或 設(shè)置組件的左上角位置。若組件為頂層容器,voidsetLocation(Pointp) 使用屏幕坐標(biāo);否則使用該容器的坐標(biāo)PointgetLocation() 獲得組件的左上角位置。PointgetLocationOnScreen() 獲得組件左上角的位置。該值使用屏幕坐標(biāo)voidsetSize(intwidth,intheight)或 重新設(shè)置組件的大小voidsetSize(Demensiond) DimensiongetSize() 得到組件的當(dāng)前大小viodsetBounds(intx,inty, 設(shè)置組件的大小。x,y設(shè)置組件在容器中的坐標(biāo),intwidth,intheight) width,height設(shè)置組件的寬和高intgetBounds().width 獲取組件的寬度intgetBounds().height 獲取組件的高度intgetBounds().x 獲取組件左上角的x坐標(biāo)intgetBounds().y 獲取組件左上角的y坐標(biāo)voidremove(Componentc) 移走容器中的組件cvoidremoveAll() 移走容器中的所有組件8.2.2標(biāo)簽(JLabel)
標(biāo)簽是用戶不能修改,只能察看的文本顯示區(qū)域,它主要是顯示單行的字符串,起著傳遞消息的功能。每一個(gè)標(biāo)簽用一個(gè)JLabel類的對(duì)象表示,創(chuàng)建標(biāo)簽的同時(shí)應(yīng)該說明這個(gè)標(biāo)簽的字符串。1.創(chuàng)建標(biāo)簽JLabellabel=newJLabel(“”);2.構(gòu)造函數(shù)JLabel(Stringlabel); 構(gòu)造一個(gè)顯示內(nèi)容為label的標(biāo)簽JLabel(Iconicon); 構(gòu)造一個(gè)帶有圖標(biāo)的標(biāo)簽JLabel(Stringlabel,intalignment); 構(gòu)造一個(gè)顯示字符串label的標(biāo)簽, 并指定它的對(duì)齊方式: LEFT(左對(duì)齊)
CENTER(居中對(duì)齊)
RIGHT(右對(duì)齊)JLabel(Stringlabel,Iconicon,intalignment);用于構(gòu)造一個(gè)帶有指定文本、圖標(biāo) 和對(duì)齊方式的標(biāo)簽3.常用方法
publicintgetAlignment() 返回當(dāng)前的對(duì)齊方式
publicStringgetText() 返回當(dāng)前顯示的內(nèi)容
publicIcongetIcon() 返回標(biāo)簽的圖標(biāo)
publicvoidsetAlignment(intalignment) 設(shè)置對(duì)齊方式
publicvoidsetText(Stringlabel) 設(shè)置顯示的字符串
publicvoidsetIcon(Iconicon) 設(shè)置標(biāo)簽的圖標(biāo)4.舉例(LabelDemo.java)JApplet是一個(gè)頂層容器,Swing組建不能直接加入到JApplet,必須將組建加入到頂層容器的內(nèi)容面板中。要獲得一個(gè)內(nèi)容面板,可使用getContentPane()方法,要設(shè)置它的內(nèi)容面板可使用setContentPane()方法。8.2.3按鈕(JButton)
按鈕(button)是用來觸發(fā)特定動(dòng)作的組件。在Java中提供多種形式的按鈕,其中主要是鼠標(biāo)單擊觸發(fā)的按鈕。按鈕類JButton直接繼承組件類JComponent。1.創(chuàng)建按鈕JButtonbutton=newJButton(“”);2.構(gòu)造函數(shù)JButton(); 創(chuàng)建一個(gè)沒有文本的按鈕JButton(Stringlabel); 創(chuàng)建一個(gè)有指定文本的按鈕JButton(Iconicon); 創(chuàng)建一個(gè)有顯示圖標(biāo)的按鈕JButton(Stringlabel,Iconicon); 創(chuàng)建一個(gè)有指定文本和圖標(biāo)的按鈕3.常用方法
publicStringgetText() 返回按鈕的名字
publicvoidsetText(Stringlabel) 為按鈕設(shè)置名字
publicIcongetIcon() 返回按鈕的圖標(biāo)
publicvoidsetIcon(Iconicon) 為按鈕設(shè)置圖標(biāo)4.舉例(ButtonDemo.java)8.2.4選項(xiàng)框選項(xiàng)框分為復(fù)選框(JCheckBox)和單選按鈕(JRadioButton),它們都有選中和不選中兩種取值,可以通過點(diǎn)擊來改變他們的狀態(tài)。復(fù)選框可以讓用戶作出多項(xiàng)選則。單選按鈕是一組按鈕,用戶只能從中選擇一個(gè)。它們是具有開關(guān)或真假值狀態(tài)的按鈕。1.創(chuàng)建復(fù)選框JCheckBoxcheckBox=newJCheckbox();2.構(gòu)造函數(shù)JCheckBox(Strings); 創(chuàng)建一個(gè)帶有文本標(biāo)簽s的復(fù)選框JCheckBox(Strings,booleanb);
創(chuàng)建一個(gè)有標(biāo)簽的復(fù)選框。若b為true,表示復(fù)選框被選中JCheckBox(Iconicon); 創(chuàng)建一個(gè)帶有圖標(biāo)的復(fù)選框JCheckBox(Iconicon,booleanb);
創(chuàng)建一個(gè)有圖標(biāo)的復(fù)選框。若b為true,表示復(fù)選框被選中JCheckBox(Strings,Iconicon);創(chuàng)建一個(gè)帶有文本標(biāo)簽和圖標(biāo)的復(fù)選框JCheckBox(Strings,Iconicon,booleanb);
創(chuàng)建一個(gè)有標(biāo)簽和圖標(biāo)的復(fù)選框。若b為true,表示復(fù)選框被選中3.常用方法
publicbooleanisSelected() 返回復(fù)選框的狀態(tài)
publicvoidsetSelected(booleanstate)
設(shè)置復(fù)選框的狀態(tài)4.單選按鈕(JRadioButton)單選按鈕的用法同復(fù)選框。由于單選按鈕是在一組按鈕中選擇一個(gè),所以要對(duì)單選按鈕分組。為了創(chuàng)造單選按鈕組,首先用類ButtonGroup創(chuàng)建按鈕組對(duì)象,然后用add()方法將單選按鈕加入到該按鈕組中。5.舉例(ChoiceDemo.java)8.2.5組合框(JComboBox)組合框又稱下拉列表框,是一個(gè)能從列表中選擇某個(gè)單獨(dú)項(xiàng)的組件。當(dāng)用戶點(diǎn)擊它時(shí),所有選項(xiàng)將被彈出,用戶可從中做出選擇。組合框分為可編輯和不可編輯的兩種,默認(rèn)為不可編輯,可使用setEditable(true)將其變?yōu)榭删庉嫷?,用戶既可以從列表中選擇也可以在附帶的文本框中直接輸入文本。1.創(chuàng)建組合框首先使用構(gòu)造方法JComboBox()創(chuàng)建組合框?qū)ο?,然后調(diào)用方法addItem(Object)將表項(xiàng)加入到列表中。8.2.5組合框(JComboBox)2.常用方法voidsetEditable(booleanb)設(shè)置組合框的編輯狀態(tài)(true為可編輯的,false為不可編輯的)voidaddItem(Objectitem)向列表中加入表項(xiàng)itemvoidinsertItemAt(Objectitem,intindex)將表項(xiàng)item插入到列表的指定位置voidremoveItem(Objectitem)從列表中刪除表項(xiàng)itemvoidremoveAllItems()刪除列表中的所有表項(xiàng)ObjectgetItemAt(intindex)返回指定索引位置的表項(xiàng)的文本intgetItemCount()返回列表中的表項(xiàng)數(shù)目intgetSelectedIndex()返回當(dāng)前選項(xiàng)的索引位置ObjectgetSelectedItem(intindex)返回當(dāng)前被選中的表項(xiàng)voidsetSelectedIndex(intindex)選中在指定索引位置的表項(xiàng)voidsetSelectedItem(Object)選中列表中的指定表項(xiàng)voidsetMaxinumRowCount(intmax)設(shè)置一次能顯示出來的列表行數(shù)
3.舉例(ComboBoxDemo.java)
8.2.6列表框(JList)
列表框(JList)可以使用戶選擇多個(gè)選項(xiàng),而且列表框的所有選項(xiàng)都是可見的。1.創(chuàng)建列表框建立一個(gè)列表框應(yīng)首先建立一個(gè)字符串?dāng)?shù)組,然后將數(shù)組傳遞給JList構(gòu)造器:Stringstr[]={“green”,”red”,”blue”};JListlist=newJList(str);
當(dāng)選項(xiàng)數(shù)目超過了列表框的可見區(qū)域的時(shí)候,列表框的右側(cè)不會(huì)出現(xiàn)一個(gè)滾動(dòng)條,不能提供自動(dòng)滾動(dòng)條功能。如果希望列表框能滾動(dòng),則需要將列表框加入到滾動(dòng)面板中,滾動(dòng)面板是能為其它組件提供滾動(dòng)功能的容器。創(chuàng)建滾動(dòng)面板可使用如下兩種構(gòu)造方法:JScrollPane(Component):創(chuàng)建一個(gè)包含組件的滾動(dòng)面板,默認(rèn)情況下,如果組件 沒有超出面板本身大小,則滾動(dòng)條不出現(xiàn)。JScrollPane(Component,int,int):創(chuàng)建一個(gè)帶有組件、垂直滾動(dòng)條配置和水平 滾動(dòng)條配置的滾動(dòng)面板??衫萌缦路椒▽?duì)滾動(dòng)條進(jìn)行配置:8.2.6列表框(JList)(1)HORIZONTAL_SCROLLBAR_ALWAYS:水平滾動(dòng)條始終出現(xiàn)(2)HORIZONTAL_SCROLLBAR_AS_NEEDED:只有需要時(shí),水平滾動(dòng)條才出現(xiàn)(3)HORIZONTAL_SCROLLBAR_NEVER:水平滾動(dòng)條不出現(xiàn)(4)VERTICAL_SCROLLBAR_ALWAYS:垂直滾動(dòng)條始終出現(xiàn)(5)VERTICAL_SCROLLBAR_AS_NEEDED:只有需要時(shí),垂直滾動(dòng)條才出現(xiàn)(6)VERTICAL_SCROLLBAR_NEVER:垂直滾動(dòng)條不出現(xiàn)2.常用方法setVisibleRowCount(intn):設(shè)置列表框能顯示的選項(xiàng)數(shù)。默認(rèn)顯示8個(gè)選項(xiàng)setSelectionMode(intmode):確定選擇方式。參數(shù)mode有三種選擇方式:
SINGLE:單選
SINGLE_INTERVAL_SELECTION:選一項(xiàng)或某個(gè)范圍的多個(gè)相鄰選項(xiàng)
MULTIPLE_INTERVAL_SELECTION:多選ObjectgetSelectedValue():返回選定的值,若選擇方式為空,則返回nullgetSelectedValues():返回選定的第一個(gè)值。如果選擇方式為空,則返回Object[]一個(gè)空數(shù)組
3.舉例(ListDemo.java)8.2.7文本框(JTextField)文本框(JTextField)是單行的文本輸入?yún)^(qū)域。1.創(chuàng)建文本框JTextFieldtextField=newJTextField(“”);2.構(gòu)造函數(shù)JTextField(); 構(gòu)造一個(gè)默認(rèn)長度的文本框JTextField(intn); 創(chuàng)建一個(gè)能容納n個(gè)字符的文本框JTextField(Stringtext); 創(chuàng)建一個(gè)帶有初始字符串text的文本框JTextField(Stringtext,intn); 創(chuàng)建一個(gè)帶有初始字符串并且能容納指定長度的文本框3.常用方法
voidsetEditable(boolean) 指定文本組件是否可編輯
booleanisEditable() 返回文本組件是否可編輯的狀態(tài)
voidsetText(Stringtext) 設(shè)置文本組件的文本內(nèi)容
StringgetText()
獲取文本組件的文本內(nèi)容
StringgetSelectedText() 獲取文本組件被高亮度顯示的文本內(nèi)容4.密碼框文本框有一個(gè)特殊的子類JPasswordField,稱為密碼域,即口令文本框。在JPasswordField對(duì)象中輸入的文本會(huì)被其它指定的字符所替代,密碼域常用來在Java程序中輸入口令。密碼域的構(gòu)造方法為JPasswordField(Stringtext,intn),其中text表示要顯示的文本,n表示文本列數(shù)。創(chuàng)建一個(gè)密碼域后可調(diào)用方法setEchoChar(char)設(shè)置用戶輸入字符的回顯字符(默認(rèn)為“*”),也可調(diào)用getPassword()返回密碼域中的文本,存放在一個(gè)字符數(shù)組中。5.舉例(TextFieldDemo.java)8.2.8文本區(qū)(JTextArea)文本框只能顯示一行內(nèi)容,有時(shí)滿足不了程序開發(fā)的需要,對(duì)于多行或大段文本的顯示需要使用Java提供的文本區(qū)(JTextArea)來實(shí)現(xiàn)。1.創(chuàng)建文本區(qū)JTextAreata=newJTextArea();2.構(gòu)造函數(shù)JTextArea(); 創(chuàng)建一個(gè)系統(tǒng)默認(rèn)大小的文本區(qū)JTextArea(introw,intcolumns);創(chuàng)建一個(gè)指定行數(shù)和列數(shù)的文本區(qū)JTextArea(Stringtext); 創(chuàng)建一個(gè)包含初始內(nèi)容的文本區(qū)JTextArea(Stringtext,introw,intcolumns);
創(chuàng)建一個(gè)包含初始內(nèi)容并且指定行數(shù)和列數(shù)的文本區(qū)3.常用方法
publicvoidappend(Stringstr) 在文本區(qū)的最后面添加文本
publicintgetRows() 返回文本區(qū)的行數(shù)
publicvoidsetRowes(introws) 設(shè)置文本區(qū)的行數(shù)
publicintgetColumns() 返回文本區(qū)的列數(shù)
publicvoidsetColumns(intcolumns) 設(shè)置文本區(qū)的列數(shù)
publicvoidsetLineWarp(booleanb) 設(shè)置文本到達(dá)組件邊界是否轉(zhuǎn)到下一行(默認(rèn)情況下,若文本區(qū)的文本超出顯示范圍,多余的文本就被剪掉)
publicvoidsetWarpStyleWord(booleanb)若b為true,表示文本到達(dá)組件邊界時(shí),是從當(dāng)前單詞開始轉(zhuǎn)到下一行;否則從當(dāng)前字符轉(zhuǎn)到下一行。在Swing中,文本區(qū)不含有水平、垂直滾動(dòng)條。若需要滾動(dòng)條,則需要將文本區(qū)加入到滾動(dòng)面板中,然后把滾動(dòng)面板插入到內(nèi)容面板中。4.舉例(TextAreaDemo.java)8.2.9滾動(dòng)條(JScrollBar)
滾動(dòng)條(JScrollBar)是一種很直觀而簡單的控制組件。在Java語言中,它通常有兩方面的用處:一方面將它作為滑塊使用,根據(jù)其所代表的數(shù)據(jù)完成某些控制;另一方面是直接用它來實(shí)現(xiàn)窗口的滾動(dòng)。創(chuàng)建滾動(dòng)條時(shí),必須要指定它的方向(垂直VERTICAL或水平HORIZONTAL,其中Java默認(rèn)VERTICAL)、初始值、可見范圍的寬度、最小值和最大值。滾動(dòng)條的當(dāng)前值是由getValue()來獲取的,該方法返回一個(gè)整型數(shù)。1.構(gòu)造方法JScrollBar(intstyle):創(chuàng)建一個(gè)指定方向的滾動(dòng)條,JScrollBar.HORIZONTAL
為水平滾動(dòng)條,JScrollBar.VERTICAL為垂直滾動(dòng)條。JScrollBar(intstyle,intinitvalue,intshumbsize,intmin,intmax):五個(gè)參數(shù)分別表示 方向、初始值、滾動(dòng)快的大小、最小值和最大值。2.常用方法intgetValue() 獲得滾動(dòng)條的當(dāng)前值voidsetValue(int) 設(shè)置滾動(dòng)條的當(dāng)前值3.舉例(ScrollBarDemo.java)8.3組件布局管理器用容器的add()方法將組件添加到容器中后,并沒有對(duì)這些組件的位置進(jìn)行設(shè)置。容器里組件的位置和大小由布局管理器決定,每個(gè)容器都有自己的默認(rèn)布局方式,可通過容器的setLayout()方法重設(shè)容器的布局方式。1.順序布局(FlowLayout)順序布局是面板JPanel的默認(rèn)布局方式,將組件從左至右擺放,當(dāng)一行擺滿后就轉(zhuǎn)到下一行繼續(xù)擺放。當(dāng)用戶對(duì)由Flow布局管理的區(qū)域進(jìn)行縮放時(shí),布局就發(fā)生變化。
舉例(FlowLayoutDemo.java)2.邊界布局(BorderLayout)邊界布局是頂層容器JWindow、JFrame、JDialog、JApplet的默認(rèn)布局方式,將容器分為東、南、西、北、中五個(gè)區(qū)域,這幾個(gè)區(qū)按照“上北下南、左西右東”的分布規(guī)律進(jìn)行布局,組件可以指定自己放在哪個(gè)區(qū)域。因?yàn)橹挥?個(gè)區(qū),所以最多只能容納5個(gè)組件。當(dāng)窗口縮放時(shí),組件相應(yīng)的位置不變化,但其大小改變??捎谜Z句setLayout(newBorderLayout());設(shè)置容器的布局為邊界布局。
voidadd(Strings,Componentcomobj)
其中:s指定組件加入的位置(North,South,East,West,Center) comobj表示要加入的組件。舉例(BorderLayoutDemo.java)3.網(wǎng)格布局(GridLayout)網(wǎng)格布局是在一個(gè)二維網(wǎng)格中布置組件,須定義行數(shù)和列數(shù)。網(wǎng)格布局適合于數(shù)量較多的組件。向網(wǎng)格中添加組件的順序是先向第一行第一格中添加第一個(gè)組件,然后是第一行第二格等等,第一行全部添加完畢后,開始第二行的添加,以此類推。組件的相應(yīng)位置不隨區(qū)域的縮放而改變,只是組件的大小改變。可用下面的語句設(shè)置容器的布局為網(wǎng)格布局:setLayout(newGridLayout(introw,intcol));舉例(GridLayoutDemo.java)4.網(wǎng)格包布局(GridBagLayout)網(wǎng)格包布局是網(wǎng)格布局的一個(gè)擴(kuò)展,網(wǎng)格布局中所有組件被布局管理器設(shè)為默認(rèn)大小,且大小相同;而網(wǎng)格包布局可排列大小不同的組件,只需指定組件占用的單元即可。
GridBagLayout語句可將容器的布局方式設(shè)置為網(wǎng)格包布局,具體步驟如下:(1)創(chuàng)建一個(gè)GridBagLayout對(duì)象,并調(diào)用setLayout方法將該對(duì)象指定為布局管理器;(2)創(chuàng)建網(wǎng)格包約束對(duì)象GridBagConstraints,此對(duì)象用來設(shè)定組件在布局中的屬性(如位置、大小等);(3)用setConstraint方法將網(wǎng)格包約束條件傳給布局管理器,最后添加組件。
setConstraint方法的格式如下:voidsetConstraint(Componentcomp,GridBagConstraintsconstraints)
使用GridBagConstraints時(shí)要滿足一定的約束條件,主要有:(1)gridx和gridy:指定組件擺放的行和列值。默認(rèn)值為RELATIVE,表示該組件緊接著上一個(gè)擺放,二者都為0表示擺放在左上角。(2)gridwidth和gridheight:指定組件在橫向和縱向上占有的網(wǎng)格數(shù)。設(shè)為常量REMAINDER表示把橫向和縱向剩下的方格都分配給該組件。(3)weightx和weighty增量字段:用來設(shè)置縮放容器時(shí),各組件分配的寬度和高度的比例數(shù),若希望縮放時(shí)組件的大小不變,則將組件的增量設(shè)為0。(4)fill和anchor:如果組件分配的空間大于它所需要的空間時(shí),GridBagLayout會(huì)根據(jù)fill的值調(diào)整該組件的大小。fiill是類GridBagConstraints中定義的四個(gè)類變量之一:
GridBagConstraints.NONE(默認(rèn)值)
GridBagConstraints.BOTH(在水平和垂直方向上都擴(kuò)展)
GridBagConstraints.HORIZONTAL(在水平方向上擴(kuò)展)GridBagConstraints.VERTICAL(在垂直方向上擴(kuò)展)如果組件未填充整個(gè)網(wǎng)格,通過設(shè)置anchor來指定它的位置。取值如下:GridBagConstraints.NORTH、GridBagConstraints.SOUTH、GridBagConstraints.EAST、GridBagConstraints.WEST、GridBagConstraints.NORTHEAST等。(5)ipadx、ipady和insets:ipadx,ipady用來設(shè)置面板內(nèi)各個(gè)組件左右和上下間隙大小(以象素為單位)。Insets變量是Insets類的一個(gè)實(shí)例,用來判斷環(huán)繞面板本身的間隙大小。類Insets包含了用于頂部、底部、左側(cè)和右側(cè)插入空間的值,這些值用在面板本身的繪制。舉例(GridBagLayoutDemo.java)5.卡片布局卡片布局是將容器的組件進(jìn)行編號(hào),象卡片一樣堆放起來,每次只顯示一個(gè)。通過CardLayout類提供的show()方法可顯示指定標(biāo)號(hào)的組件。setLayout(newCardLayout());//設(shè)置容器的布局為卡片布局voidadd(Strings,Componentcomobj)
其中s指定組件的編號(hào);comobj表示被加入的組件。show(Objectname,Strings)
其中name為容器對(duì)象名;s為組件的編號(hào)。舉例(CardLayoutDemo.java)6.面板的使用面板(JPanel)是一個(gè)容器,組件可以直接添加到面板中,也可以把面板放到另一個(gè)更大的面板中實(shí)現(xiàn)面板的嵌套,還可以使用方法setContentPane()把面板設(shè)為頂層容器的內(nèi)容面板。使用面板的目的就是為了分層次、分區(qū)域管理各種組件,通過各個(gè)面板的布局管理器對(duì)本身的組件進(jìn)行管理,達(dá)到布局美觀合理。舉例(PanelDemo.java)7.手工布局在Java中,不但可以使用布局管理器,也可以不使用它而直接手工放置各個(gè)組件。舉例(NoLayoutDemo.java)8.4事件處理在Java中,程序和用戶的交互是通過響應(yīng)各種事件來實(shí)現(xiàn)的。當(dāng)用戶操作GUI組件時(shí)會(huì)引發(fā)各種事件,Java虛擬機(jī)就會(huì)將事件的消息傳遞給程序,由程序中的事件處理方法對(duì)事件進(jìn)行處理。系統(tǒng)根據(jù)用戶的操作構(gòu)造出相應(yīng)事件類的對(duì)象,如鼠標(biāo)的移動(dòng)、單擊某按鈕、鍵盤的單擊等。Java用Event類的對(duì)象來保存和表示事件,當(dāng)用戶在程序的運(yùn)行過程中引發(fā)一個(gè)系統(tǒng)可以識(shí)別的事件時(shí),系統(tǒng)將自動(dòng)創(chuàng)建一個(gè)Event類的對(duì)象來表示這個(gè)事件,并在這個(gè)對(duì)象中保存該事件的相關(guān)信息。在Java中采用了委托型事件處理模式,即對(duì)象本身沒有成員方法來處理事件,而是將事件委托給事件監(jiān)聽者處理,每個(gè)事件有一個(gè)相應(yīng)的監(jiān)聽者接口,它規(guī)定了能夠接收(并處理)該類事件的方法的規(guī)范。監(jiān)聽者實(shí)現(xiàn)了監(jiān)聽者接口的類,它包含有事件處理程序。每一個(gè)AWT對(duì)象至少注冊(cè)一個(gè)listener對(duì)象,以便處理AWT對(duì)象的事件。編程人員要為事件源指定監(jiān)聽者對(duì)象(即指定處理某種事件的事件處理程序)。事件的產(chǎn)生者稱為事件源。對(duì)事件進(jìn)行處理的類叫做事件監(jiān)聽者。如果希望對(duì)事件進(jìn)行處理,可調(diào)用事件源的注冊(cè)方法把事件監(jiān)聽者注冊(cè)給事件源,當(dāng)事件源發(fā)生事件時(shí),事件監(jiān)聽者就代替事件源對(duì)事件進(jìn)行處理,這就是委托。委托的方法如下:Source.addxxxListener(EventListener);Java有20多個(gè)預(yù)定義事件類,它們包含了所有組件上可能發(fā)生的事件。每個(gè)事件都有一個(gè)相應(yīng)的事件接口,事件接口的事件處理方法完成對(duì)事件的處理。因此事件監(jiān)聽者的任務(wù)就是要實(shí)現(xiàn)相應(yīng)的事件接口。4.4.1事件監(jiān)聽者
事件監(jiān)聽者是一種處理事件的接口,定義于java.awt.event包中,在此包中也定義了各種事件類。當(dāng)事件源對(duì)象因用戶的操作(鼠標(biāo)或鍵盤)而產(chǎn)生事件時(shí),系統(tǒng)會(huì)自動(dòng)觸發(fā)此事件類對(duì)象E,并通知所委托之事件監(jiān)聽者A(若來源對(duì)象已向A注冊(cè)),然后事件監(jiān)聽者A中所定義之處理各種事件的方法(事件處理者1~n)便會(huì)處理此事件E的各種狀況。來源對(duì)象向事件監(jiān)聽者A注冊(cè)事件監(jiān)聽者A事件處理者2事件處理者n事件處理者1用戶操作產(chǎn)生事件E4.4.2Java常用事件、事件源、接口和方法事件 事件源事件接口名稱 實(shí)現(xiàn)方法ActionEvent JButton ActionListener actionPerformed(ActionEvent) JCheckBox JRadioButton JTextField JTextArea JMenuItemListSelectionEventJlist ListSelectionListenervalueChanged()AdjustmentEvent JScrollbar AdjustmentListener adjustmentValueChangedItemEvent JComboBox ItemListener itemStateChanged(ItemEvent)MouseMotionEvent Component MouseMotionListener mouseDragged(MouseEvent) mouseMoved(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent)MouseEvent Component MouseListener mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent)FocusEvent Component FocusListener focusGained focusLost
事件 事件源 事件接口名稱 實(shí)現(xiàn)方法
keyPressed(KeyEvent)KeyEvent Component KeyListener keyReleased(KeyEvent) keyTyped(KeyEvent) windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent)WindowEvent JWindow WindowListener windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent)DocumentEvent JTextField DocumentListener insertUpdate() JTextArea removeUpdate() ChangedUpdate()ComponentEvent Component ComponentListener componentMoved componentHidden componentResized componentShownContainerEvent Container ContainerListener componentAdd componentRemovedgetSource()返回產(chǎn)生事件的對(duì)象,該方法適用于所有的事件getActionCommand()獲得事件源的命令名稱getItemSelectable()返回產(chǎn)生事件的事件源getItem()返回發(fā)生事件的項(xiàng)目getAdjustmentType()返回調(diào)節(jié)類型getValue()返回發(fā)生事件的調(diào)整值4.4.3事件處理編程范例例1按鈕事件的處理例2列表事件處理例3文本區(qū)事件處理例4滾動(dòng)條事件處理例5鍵盤事件舉例例6鼠標(biāo)事件舉例例5鍵盤事件舉例當(dāng)鍵盤上的某個(gè)按鍵被按下時(shí),會(huì)產(chǎn)生一個(gè)KEY_PRESSED事件;當(dāng)用戶釋放該鍵時(shí),會(huì)產(chǎn)生KEY_RELEASE事件。鍵盤事件由KeyListener中的三個(gè)方法來處理,分別是:publicvoidkeyPressed(KeyEvente)處理按鍵按下事件PublicvoidkeyReleased(KeyEvente)處理按鍵釋放事件PublicvoidkeyTyped(KeyEvente)處理按鍵生成的字符
getKeyChar()方法用來返回用戶鍵入的字符
getKeyCode()方法用來返回鍵盤事件的虛擬鍵代碼,虛擬鍵代碼通過前綴VK_對(duì)應(yīng)鍵盤上的按鍵。舉例(keyDemo.java)適配器類
Java語言為許多方法事件接口提供了Adapter(適配器)類,如:MouseAdapter、WindowAdapter、KeyAdapter等。這些Adapter類實(shí)現(xiàn)了相應(yīng)的事件接口,類中的方法是空的,繼承Adapter類時(shí),重寫所需的方法即可。舉例(keyDemo2.java)8.5高級(jí)圖形用戶界面Java的高級(jí)圖形用戶界面組件主要包括窗口、菜單和對(duì)話框等,它們可以構(gòu)成標(biāo)準(zhǔn)GUI應(yīng)用程序。8.5.1顏色和字體1.顏色常用顏色表顏色常量色彩 RGB值 顏色常量色彩RGB值
black 黑色 (0,0,0) magenta 洋紅(255,0,255)blue 藍(lán)色 (0,0,255) orange 橙色(255,200,0)cyan 青色 (0,255,255) pink 粉紅(255,17,275)darkGray灰黑 (64,64,64) red 紅色(255,0,0)gray 灰色 (128,128,128) white 白色(255,255,255)green 綠色 (0,255,0) yellow 黃色(255,255,0)lightGray淺灰 (192,192,192)(1)構(gòu)造方法Color(floatr,floatg,floatb)指定三原色R、G、B的浮點(diǎn)值Color(intr,intg,intb) 指定三原色R、G、B的整數(shù)值Color(intrgb) 指定一個(gè)二進(jìn)制整數(shù)來代表三原色的混合色:
16~23位代表紅色
8~15位代表綠色
0~7位代表藍(lán)色。(2)常用方法setColor(Colorc) 設(shè)置繪圖顏色setBackground(Colorc) 設(shè)置背景色setForeground(Colorc) 設(shè)置前景色getColor(Colorc) 獲取繪圖顏色getBackground(Colorc) 獲取背景色getForeground(Colorc) 獲取前景色2.字體
Java通過Font類處理字體。Font類的構(gòu)造方法如下:Font(Stringname,intstyle,intsize)其中的三個(gè)參數(shù)分別代表字體名稱、風(fēng)格、大小。
Java提供了5種邏輯字體:Dialog、SansSerif、Monospaced、Serif和DialogInput,并將它們映射為計(jì)算機(jī)上的物理字體。如:在Windows系統(tǒng)上,SansSerif對(duì)應(yīng)為Arial。如果使用了計(jì)算機(jī)不支持的字體,Java將以該計(jì)算機(jī)的默認(rèn)字體來代替。設(shè)定字體風(fēng)格的常量:Font.BOLD(加粗)、Font.ITALIC(傾斜)、Font.PLAIN(正常),也可將它們疊加在一起得到組合的效果。字體大小是以點(diǎn)來衡量的,一個(gè)點(diǎn)是1/72英寸,可選取整數(shù)值。創(chuàng)建字體后,可調(diào)用setFont()方法將其設(shè)置為當(dāng)前字體。常用方法:
intgetStyle():返回當(dāng)前字體的風(fēng)格的整數(shù)值
intgetSize():返回當(dāng)前字體大小的整數(shù)值
StringgetName():返回當(dāng)前字體名稱的字符串
StringgetFamily():返回當(dāng)前字體家族名稱的字符串booleanisPlain():返回當(dāng)前字體是否是正常字體
booleanisBold():返回當(dāng)前字體是否是黑體
booleanisItalic():返回當(dāng)前字體是否是斜體舉例(ColorFontDemo.java)8.5.2窗口、框架、對(duì)話框窗口(JWindow)、框架(JFrame)、對(duì)話框(JDialog)和小應(yīng)用程序(JApplet)是Swing的四個(gè)頂層容器,它們構(gòu)成圖形用戶界面的主體,他們不允許直接加入組件。通常情況下,組件被加入到容器的內(nèi)容面板(contentpane)中。要獲得一個(gè)內(nèi)容面板,可使用getContentPane()方法,要設(shè)置它的內(nèi)容面板可使用setContentPane()方法。將組件加入到一個(gè)容器的內(nèi)容面板中,步驟如下:(1)創(chuàng)建一個(gè)面板;(2)使用方法add(Component)將組件加入到面板中;(3)用面板作為參數(shù)來調(diào)用方法setContentPane(Container)。1.窗口(JWindow)窗口能夠顯示在用戶的桌面上,沒有標(biāo)題欄、最大化、最小化和關(guān)閉按鈕。這種無邊框的窗口通常用在程序首次啟動(dòng)和動(dòng)畫程序中,但在圖形用戶界面中一般不會(huì)直接產(chǎn)生JWindow對(duì)象,而是使用JFrame類。2.框架(JFrame)框架是一個(gè)功能齊全的窗口,它帶有標(biāo)題欄、窗口管理按鈕,可在其中添加組件,框架是通過Jframe類生成的,JFrame類的構(gòu)造方法如下:JFrame() 創(chuàng)建無標(biāo)題的窗口JFrame(Strings) 創(chuàng)建有標(biāo)題的窗口框架在創(chuàng)建時(shí)是不可見的,需調(diào)用方法setVisible(true)或show()設(shè)為可見。對(duì)應(yīng)setVisible(false)或hide()設(shè)為不可見的。JFrame從基類Frame繼承的常用方法如下:setTitle(Strings):設(shè)置框架的標(biāo)題setIconImage(Imageimage):設(shè)置框架圖標(biāo)的圖像setResizable(Booleanb):設(shè)置窗口是否可調(diào)整大小(默認(rèn)可調(diào)整)setSize(intwidth,intheight):設(shè)置窗口的寬高setBounds(intx,inty,intwidth,intheight):設(shè)置窗口的左上角坐標(biāo)和寬高pack():用緊湊方式顯示窗口dispose():關(guān)閉窗口并收回創(chuàng)建窗口的系統(tǒng)資源。舉例(FrameDemo.java)3.對(duì)話框?qū)υ捒蚍譃橛心J胶蜔o模式兩種。有模式對(duì)話框打開后必須做出響應(yīng),在處理完之前,用戶不能同應(yīng)用程序的主窗口進(jìn)行交互,只有用戶關(guān)閉此對(duì)話框后,應(yīng)用程序才能繼續(xù)。無模式對(duì)話框則可以響應(yīng)對(duì)話框以外的其它事件,無模式對(duì)話框打開后,用戶能夠同時(shí)與應(yīng)用程序窗口進(jìn)行交互。創(chuàng)建對(duì)話框最方便的方法是使用JOptionPane類,這是一些小窗口,用來詢問問題、警告用戶、提供簡單的重要信息等。這些對(duì)話框都是有模式對(duì)話框,用戶不需要?jiǎng)?chuàng)建新的類來表示這些窗口,也不用編寫事件處理方法來接收輸入,僅需要一條語句就可以建立起多變的對(duì)話框,類JOptionPane可用來創(chuàng)建四種標(biāo)準(zhǔn)對(duì)話框,如下表所示。標(biāo)準(zhǔn)對(duì)話框名稱 含義Confirm確認(rèn)對(duì)話框 顯示一條信息,并等待用戶點(diǎn)擊OK按鈕Input輸入對(duì)話框 顯示一條信息,要求用戶完成一行輸入Message消息對(duì)話框 顯示一條信息,并得到用戶的確認(rèn)Option對(duì)話框 顯示一條信息,并得到用戶在一組選項(xiàng)中的選擇
這四種對(duì)話框外觀布局都有相似之處,左邊有一圖標(biāo),對(duì)應(yīng)對(duì)話框信息的類型,下方有一個(gè)或多個(gè)選項(xiàng)按鈕,并且要為用戶提供信息。在對(duì)話框構(gòu)造方法重要設(shè)置一些參數(shù),來定制所需的對(duì)話框,他們共有的參數(shù)的功能如下:
Component:該參數(shù)指出了對(duì)話框從屬哪個(gè)容器,即該對(duì)話框的擁有者,若為null,則以“默認(rèn)的”窗口為此對(duì)話框的擁有者。Object:可以是一個(gè)字符串、一個(gè)組件或者一個(gè)圖標(biāo)對(duì)象,如果它是一個(gè)字符串,該文本會(huì)被顯示在對(duì)話框中;如果它是一個(gè)組件或圖標(biāo),該對(duì)象會(huì)被顯示出來取代文本信息。往對(duì)話框中添加不同的組件,會(huì)實(shí)現(xiàn)不同的功能。
String:定義標(biāo)題欄要顯示的字符串。
IntmessageType:它描述了對(duì)話框的類型,相應(yīng)的對(duì)話框左側(cè)的圖標(biāo)反映了這種類型的不同。有五種類型可選,分別是:ERROR_MESSAGE、INFORMATION_MESSAGE、PLAIN_MESSAGE、QUESTION_MESSAGE或者WARING_MESSAGE,用戶也可以提供自己的替代圖標(biāo)。
IntoptionType:它指明了哪種選項(xiàng)按鈕被顯示出來,用戶可以選擇四種選項(xiàng)類型中的一種:DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION和OK_CANCEL_OPTION,反映了用戶的響應(yīng)。(1)Confirm確認(rèn)對(duì)話框:有兩個(gè)構(gòu)造方法,分別為intshowConfirmDialog(Component,Object)和intshowConfirmDialog(Component,Object,String,int,int)返回值為YES_OPTION、NO_OPTION或CANCEL_OPTION。(2)Input對(duì)話框:會(huì)詢問一個(gè)問題,并用一個(gè)文本框來存儲(chǔ)對(duì)它的響應(yīng),返回值為一字符串,有兩個(gè)方法,分別是:StringshowInputDialog(Component,Object)和StringshowInputDialog(Component,Object,String,int)(3)Message對(duì)話框:用來顯示信息的簡單窗口,與其它對(duì)話框不同,它不返回任何值,有兩種方法,分別是:voidshowMessageDialog(Component,Object)和voidshowMessageDialog(Component,Object,String,int)(4)Option對(duì)話框:集成了所有其它對(duì)話框的特性。通過如下的方法來構(gòu)造:showOptionDialog(Component,Object,String,int,int,Icon,Object[],object)
前三個(gè)參數(shù)表示父組件,要顯示的文本、圖標(biāo)或組件,對(duì)話框的標(biāo)題。第四個(gè)參數(shù)表示對(duì)話框的類型,使用類變量YES_NO_OPTION或YES_NO_CANCEL_OPTION。第五個(gè)參數(shù)描述了對(duì)話框的類型,第六個(gè)參數(shù)表示要顯示的一個(gè)Icon對(duì)象,它代替前一個(gè)參數(shù)的圖標(biāo)。第七個(gè)參數(shù)是一個(gè)對(duì)象數(shù)組,在YES_NO_OPTION或YES_NO_CANCEL_OPYION沒有使用的情況下(第四個(gè)參數(shù)為0),存放在對(duì)話框中做出選擇的組件和其他對(duì)象。最后一個(gè)參數(shù)是在沒有使用YES_NO_OPTION或YES_NO_CANCEL_OPTION時(shí)設(shè)置默認(rèn)選項(xiàng)。舉例(DialogDemo1.java)
除使用JOptionPane顯示信息外,還需要經(jīng)常訪問文件系統(tǒng),文件選擇器JFileChooser類提供了從文件系統(tǒng)中進(jìn)行文件選擇的界面。文件選擇器實(shí)際上并不能打開或保存文件,它只是幫助找到要打開或保存的文件對(duì)象,要想真正實(shí)現(xiàn)打開或保存,還要使用文件的輸入、輸出系統(tǒng)。JFileChooser類能夠創(chuàng)建有模式文件對(duì)話框,分為文件打開對(duì)話框和文件關(guān)閉對(duì)話框,其創(chuàng)建步驟如下:(1)創(chuàng)建一個(gè)JFileChooser對(duì)象:JFileChooserchooser=newJFileChooser();(2)將文件選擇器設(shè)為可見,調(diào)用showOpenDialog或showSaveDialog來顯示對(duì)話框:intreturnvalue=choose.showOpenDialog(parent);parent定義了對(duì)話框的擁有者,parent為null時(shí),使用默認(rèn)擁有者。當(dāng)用戶單擊確定按鈕則返回JFileChooser.APPROVE_OPTION,單擊取消按鈕則返回JFileChooser.CANCEL_OPTION。
文件對(duì)話框的常用方法如下:
chooser.setCurrentDirectory(newFile(*.*)):設(shè)置當(dāng)前目錄
chooser.getCurrentDirectory():獲取當(dāng)前目錄
chooser.setMultiSelectionEnable(true):允許用戶選擇多個(gè)文件
chooser.setSelectedFile(newFile(filename)):使用默認(rèn)文件名
Stringfilename=chooser.getSelectedFile():得到選擇的一個(gè)文件
Stringfilename=chooser.getSelectedFiles
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年建筑工程有限公司裝飾裝修承包合同示例
- 2025超市租賃合同協(xié)議書范文
- 江蘇省無錫市2024-2025學(xué)年七年級(jí)下學(xué)期3月月考語文試題(含答案)
- 推動(dòng)鄉(xiāng)村全面振興的創(chuàng)新策略與實(shí)踐路徑
- 物業(yè)項(xiàng)目經(jīng)理廉政管理
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《三位角色綁定及動(dòng)畫》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣西生態(tài)工程職業(yè)技術(shù)學(xué)院《VS測(cè)試與可測(cè)性設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西職業(yè)技術(shù)學(xué)院《人力資源綜合實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南陽理工學(xué)院《金融統(tǒng)計(jì)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年阜陽市重點(diǎn)中學(xué)高考百校聯(lián)考語文試題試卷含解析
- 智慧醫(yī)聯(lián)體建設(shè)項(xiàng)目可行性研究報(bào)告
- 中國主要水域資源分布及開發(fā)利用
- 《中電聯(lián)團(tuán)體標(biāo)準(zhǔn)-220kV變電站并聯(lián)直流電源系統(tǒng)技術(shù)規(guī)范》
- 2024年鄭州黃河護(hù)理職業(yè)學(xué)院單招職業(yè)技能測(cè)試題庫及答案解析文檔版
- 非機(jī)動(dòng)車交通管理及規(guī)劃研究
- 勞務(wù)派遣及醫(yī)院護(hù)工實(shí)施預(yù)案
- 華電行測(cè)題庫及答案2024
- 產(chǎn)后病(中醫(yī)婦科學(xué))
- 蘇州市2023-2024學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試題(原卷版)
- 社區(qū)獲得性肺炎教學(xué)演示課件
- 農(nóng)村藍(lán)莓樹補(bǔ)償標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論