版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1,目標(biāo)重點難點,【課前思考】1 java語言是跨平臺的編程語言,那么圖形用戶界面如何做到跨平臺?2 AWT有哪些組件和容器?它們各自的使用方法是什么?3 AWT的事件處理模型是什么?原理又如何? 【學(xué)習(xí)目標(biāo)】掌握用AWT來設(shè)計圖形用戶界面的方法,尤其是組件、容器、布局管理器等概念。學(xué)習(xí)AWT事件處理模型,掌握事件源、事件、事件處理者等概念,讓程序能夠響應(yīng)用戶的操作。最后了解AWT各個組件的用法及所采用的事件處理接口。 【學(xué)習(xí)指南】理解概念,多實踐,勤思考,舉一反三。 【難 重 點】 重點:事件處理模型。難點:內(nèi)部類匿名類在AWT中的應(yīng)用。,2,圖形用戶界面設(shè)計,3,使用AWT構(gòu)造GUI 組件
2、 容器 布局管理 AWT 事件處理模型 AWT 組件,4,使用AWT構(gòu)造,java.awt包 提供了基本的java程序的GUI設(shè)計工具。 Component Container LayoutManager,5,Java.lang.Object,AWTEvent,Font,Componet,Graphics,MenuComponent,各種布局管理器類,Container,Panel,Applet,Window,Frame,6,Component(組件),Java的圖形用戶界面的最基本組成部分是組件,組件是一個可以以圖形化的方式顯示在屏幕上并能與用戶進行交互的對象,例如一個按鈕,一個標(biāo)簽等。 組
3、件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來。 組件的一般功能 基本的繪畫支持 外形控制 大小和位置控制 圖像處理 組件的狀態(tài)控制,7,Container(容器),容器(Container)實際上是Component的子類,因此容器本身也是一個組件,具有組件的所有性質(zhì),另外還具有容納其它組件和容器的功能。 主要功能 組件的管理 布局管理,8,Graphics類,Graphics是所有用來在組件上進行圖形繪制時所使用的圖形環(huán)境上下文的父類. 它提供了對組件進行繪制的一般方法和接口 封裝了用來進行圖形繪制時必須的狀態(tài)信息 要繪制的組件對象 當(dāng)前顏色 當(dāng)前字體 當(dāng)前邏輯點操作的功能
4、(Xor或者paint) 當(dāng)前XOR方式的替代顏色。,9,LayoutManager(布局管理器),為了使我們生成的圖形用戶界面具有良好的平臺無關(guān)性,Java語言中,提供了布局管理器這個工具來管理組件在容器中的布局,而不使用直接設(shè)置組件位置和大小的方式。 每個容器都有一個布局管理器,當(dāng)容器需要對某個組件進行定位或判斷其大小尺寸時,就會調(diào)用其對應(yīng)的布局管理器。,10,在程序中安排組件的位置和大小時,應(yīng)該注意: 容器中的布局管理器負(fù)責(zé)各個組件的大小和位置,因此用戶無法在這種情況下設(shè)置組件的這些屬性。如果試圖使用Java語言提供的setLocation(),setSize(),setBounds()
5、等方法,則都會被布局管理器覆蓋。 如果用戶確實需要親自設(shè)置組件大小或位置,則應(yīng)取消該容器的布局管理器,方法為: setLayout(null);,11,常用容器,Frame Panel Applet,12,Frame,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Window | +-java.awt.Frame,13,import java.awt.*; public class MyFrame extends Frame public static void main(String a
6、rgs ) MyFrame fr = new MyFrame(Hello Out There!); fr.setSize(200,200); fr.setBackground(Color.red); fr.setVisible(true); public MyFrame (String str) super(str); ,14,運行結(jié)果,15,Panel,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Panel,16,import java.awt.*; public class Fram
7、eWithPanel extends Frame public FrameWithPanel(String str) super(str); public static void main(String args) FrameWithPanel fr = new FrameWithPanel(Frame with Panel); Panel pan=new Panel();,17,fr.setSize(200,200); fr.setBackground(Color.red); fr.setLayout(null); pan.setSize(100,100); pan.setBackgroun
8、d(Color.yellow); fr.add(pan); fr.setVisible(true); ,18,運行結(jié)果:,19,LayoutManager,FlowLayout BorderLayout GridLayout CardLayout GridBagLayout,20,import java.awt.*; public class ExGui private Frame f; private Button b1; private Button b2; public static void main(String args) ExGui that = new ExGui(); tha
9、t.go(); ,21,public void go() f = new Frame(GUI example); f.setLayout(new FlowLayout(); b1 = new Button(Press Me); b2 = new Button(Dont Press Me); f.add(b1); f.add(b2); f.pack(); f.setVisible(true); ,22,運行結(jié)果,23,FlowLayout,Panel,Applet的缺省布局管理器。 setLayout(new FlowLayout(FlowLayout.RIGHT,20,40); setLayo
10、ut( (new FlowLayout FlowLayout.LEFT); setLayout(new FlowLayout(); 第1個參數(shù)設(shè)置對齊方向(alignment ),缺省情況是居中, 第2,3個參數(shù)設(shè)置橫向和縱向的間隔(gap),缺省值是5,24,import java.awt.*; public class myButtons public static void main(String args) Frame f = new Frame(); f.setLayout(new FlowLayout(); Button button1 = new Button(Ok); Butt
11、on button2 = new Button(Open); Button button3 = new Button(Close); f.add(button1); f.add(button2); f.add(button3);,25,f.setSize(300,100); f.setVisible(true); 運行結(jié)果為:,26,BorderLayout,Window,F(xiàn)rame和Dialog的缺省布局管理器。BorderLayout布局管理器包括5個區(qū)域:North,South,East,West和Center。添加組件時,必須指明添加位置.否則無法顯示. import java.awt
12、.*; public class buttonDir public static void main(String args) Frame f = new Frame(BorderLayout); f.setLayout(new BorderLayout();,27,f.add(North, new Button(North); f.add(South, new Button(South); f.add(East, new Button(East); f.add(West, new Button(West); f.add(Center, new Button(Center); f.setSiz
13、e(200,200); f.setVisible(true); ,28,運行結(jié)果,29,30,GridLayout,使容器中各個組件呈網(wǎng)格狀布局。從上到下,從左到右一次排列. import java.awt.*; public class ButtonGrid public static void main(String args) Frame f = new Frame(GridLayout); f.setLayout(new GridLayout(3,2); f.add(new Button(1); f.add(new Button(2);,31,f.add(new Button(3);
14、f.add(new Button(4); f.add(new Button(5); f.add(new Button(6); f.setSize(200,200); f.setVisible(true); ,32,運行結(jié)果,33,CardLayout,CardLayout布局管理器能夠幫助用戶處理兩個以至更多的成員共享同一顯示空間。,34,import java.awt.*; import java.awt.event.*; public class ThreePages implements MousListener CardLayout layout=new CardLayout(); F
15、rame f=new Frame(“CardLayout”); Button page1Button; Label page2Label; TextArea page3Text; Button page3Top; Button page3Bottom; public static void main(String args) new ThreePages().go(); ,35,Public void go() f.setLayout(layout); f.add(page1Button=new Button(“Button page”) , “page1Button”); page1Butt
16、on.addMouseListener(this); f.add(page2Label=new Label(“Label page”) , “page2Label”); page2Label.addMouseLisener(this); /注冊監(jiān)聽器 Panel panel=new Panel(); panel.setLayout(new BorderLayout(); panel.add(page3Text=new TextArea(“Composite page”), “Center”);,36,page3Text.addMouseListener(this); panel.add(pag
17、e3Top=new Button(“Top button”) , “North”); page3Top.addMouseListener(this); panel.add(page3Bottom=new Button(“Bottom button”) ,“South”); page3Bottom.addMouseListener(this); f.add(panel,“panel”); f.setSize(200,200); f.setVisible(true); ,37,public void mouseClicked(MouseEvent e) layout.next(f); public
18、 void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) ,38,模擬考題,Question 31) Which of the following statements are true? 1) The default layout manager for an Applet is FlowLayout 2) The default layout mana
19、ger for a Frame is FlowLayout 3) A layout manager must be assigned to an Applet before the setSize method is called 4) The FlowLayout manager attempts to honor the preferred size of any components,39,模擬考題,Answer to Question 31) 1) The default layout manager for an Applet is FlowLayout 4) The FlowLay
20、out manager attempts to honor the preferred size of any components,40,容器的嵌套,import java.awt.*; public class ExGui3 private Frame f; private Panel p; private Button bw,bc; private Button bfile,bhelp; public static void main(String args) ExGui3 gui = new ExGui3(); gui.go(); ,41,public void go() f = ne
21、w Frame(GUI example 3); bw=new Button(West); bc=new Button(Work space region); f.add(bw,West); f.add(bc,Center); p = new Panel(); f.add(p,North);,42,bfile= new Button(File); bhelp= new Button(Help); p.add(bfile); p.add(bhelp); f.pack(); f.setVisible(true); ,43,運行結(jié)果:,44,Frame Frame是一個頂級窗口。 Frame的缺省布局
22、管理器為BorderLayout。 Panel Panel無法單獨顯示,必須添加到某個容器中。 Panel的缺省布局管理器為FlowLayout。 當(dāng)把Panel作為一個組件添加到某個容器中后,該Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某個區(qū)域顯示多個組件。,45,無布局管理器,setLayout(null),46,AWT 事件處理機制,47,什么是事件?,Event 事件,就是發(fā)生在用戶界面上的用戶交互行為所產(chǎn)生的一種效果。 Event Source 產(chǎn)生事件的對象。 Event handler(Listener) 接收事件對象并對其進行處
23、理的方法。,48,事件處理模型,Hierachical model(JDK 1.0) 事件傳遞機制。 Delegation model(JDK 1.1, 1.2), 授權(quán)(委托)處理機制。,49,Delegation Model(事件授權(quán)處理模型),將事件源對象和事件處理器(事件監(jiān)聽器)分開。,50,import java.awt.*; import java.awt.event.*; public class TestButton public static void main(String args) Frame f = new Frame(Test); Button b = new Bu
24、tton(Press Me!); b.addActionListener(new ButtonHandler(); f.setLayout(new FlowLayout(); f.add(b);,51,f.setSize(200,100); f.setVisible(true); class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(Action occurred); ,52,53,使用JDK1.1授權(quán)處理模型進行事件處理的一般方法:
25、 對于某種類型的事件XXXEvent,要想接收并處理這類事件,必須定義相應(yīng)的事件監(jiān)聽器類,該類需要實現(xiàn)針對特定事件的特定接口XXXListener; ActionEvent ActionListener 事件源中產(chǎn)生事件后,必須注冊相應(yīng)于該類事件的監(jiān)聽器,使用addXXXListener(XXXListener )方法來注冊監(jiān)聽器。 事件發(fā)生后,產(chǎn)生表示特定事件的事件對象,事件對象被傳遞給已經(jīng)注冊的事件監(jiān)聽器,調(diào)用監(jiān)聽器中的特定方法處理事件,54,事件對象,java.util.EventObject類 EventObject類是所有事件對象的基礎(chǔ)類,所有的事件類都是由它派生出來的。 publi
26、c class EventObject implements java.io.Serializable protected transient Object source; public EventObject(Object source); public Object getSource(); public String toString(); ,55,java.awt.AWTEvent,和AWT有關(guān)的所有事件類都由java.awt.AWTEvent類派生 ,它也是EventObject類的子類。AWT事件共有10類,可以歸為兩大類:低級事件和高級事件。,56,低級事件 ComponentE
27、vent(組件事件:組件尺寸的變化,移動) ContainerEvent(容器事件:組件增加,移動) WindowEvent(窗口事件:關(guān)閉窗口,窗口閉合,圖標(biāo)化) FocusEvent(焦點事件:焦點的獲得和丟失) KeyEvent(鍵盤事件:鍵按下、釋放) MouseEvent(鼠標(biāo)事件:鼠標(biāo)單擊,移動),57,高級事件(語義事件) ActionEvent(動作事件:按鈕按下,TextField中按Enter鍵) AdjustmentEvent(調(diào)節(jié)事件:在滾動條上移動滑塊以調(diào)節(jié)數(shù)值) ItemEvent(項目事件:選擇項目,不選擇“項目改變”) TextEvent(文本事件,文本對象改變
28、),58,事件監(jiān)聽器,每類事件都有對應(yīng)的事件監(jiān)聽器 監(jiān)聽器是接口,根據(jù)動作來定義方法。 interface KeyListener extends java.util.EventListener public void keyPressed(KeyEvent ev); public void keyTeleased(KeyEvent ev); public void keyTyped(KeyEvent ev); ,59,注冊和注銷監(jiān)聽器,注冊監(jiān)聽器: public void add (listener); 注銷監(jiān)聽器: public void remove (listener);,60,注冊和
29、注銷監(jiān)聽器,AWT的組件類中提供注冊和注銷監(jiān)聽器的方法,例如Button類:(查API) public class Button extends Component . public synchronized void addActionListener(ActionListener l); public synchronized void removeActionListener(ActionListener l); ,61,AWT事件及其相應(yīng)的監(jiān)聽器接口,ActionEvent 激活組件 ActionListener ActionPerformed(ActionEvent),62,Item
30、Event 選擇了某些項目 ItemListener ItemStateChanged(ItemEvent),63,MouseEvent 鼠標(biāo)移動 MouseListener mouseDragged(MouseEvent) mouseMoved(MouseEvent),64,MouseEvent 鼠標(biāo)點擊等 MouseListener mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent),65,Ke
31、yEvent 鍵盤輸入 KeyListener KeyPressed(KeyEvent) KeyReleased(KeyEvent) KeyTyped(KeyEvent),66,FocusEvent 組件收到或失去焦點 FocusListener focusGained(FocusEvent) focusLost(focusEvent),67,AdjustementEvent 移動了滾動條等組件 AdjustmentListener adjustmentValueChanged(AdjustmentEvent),68,ComponentEvent 對象移動縮放顯示隱藏等 ComponentLi
32、stener componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent),69,WindowEvent 窗口收到窗口級事件 WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(
33、WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent),70,ContainerEvent 容器中增加刪除了組件 ContainerListener componentAdded(containerEvent) componentRemoved(containerEvent),71,TextEvent 文本字段或文本區(qū)發(fā)生改變 TextListener textValueChanged(TextEvent),72,例12.12 import java.awt.*; import java.awt.even
34、t.*; public class TwoListen implementsMouseMotionListener,MouseListener,WindowListener private Frame f; private TextField tf; public static void main(String args) TwoListen two = new TwoListen(); two.go(); ,73,public void go() f = new Frame(Two listeners example); f.add(new Label(Click and drag the
35、mouse),North); tf = new TextField(30); f.add(tf,South); f.addMouseMotionListener(this); f.addMouseListener(this); f.addWindowListener(this); f.setSize(300,200); f.setVisible(true); ,74,public void mouseDragged (MouseEvent e) String s = Mouse dragging : X=+e.getX()+Y = +e.getY(); tf.setText(s); publi
36、c void mouseMoved(MouseEvent e) public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) String s = The mouse entered; tf.setText(s); ,75,public void mouseExited(MouseEvent e) String s = The mouse has left the building; tf.setText(s); public void mousePressed(MouseEvent e) publi
37、c void mouseReleased(MouseEvent e) public void windowClosing(WindowEvent e) System.exit(1); ,76,public void windowOpened(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowClosed(WindowEvent e) public void windowActivated(WindowEv
38、ent e) public void windowDeactivated(WindowEvent e) ,77,可以聲明多個接口 implements MouseMotionListener, MouseListener,WindowListener 可以同時監(jiān)聽一個事件源上發(fā)生的多種事件: f.addMouseMotionListener(this); f.addMouseListener(this); f.addWindowListener(this); 可以通過事件對象獲得詳細(xì)資料 public void mouseDragged(MouseEvent e) String s=“Mous
39、e dragging :X=” +e.getX()+“Y=”+e.getY(); tf.setText(s); ,78,事件適配器(Event Adapters),一種簡單的實現(xiàn)監(jiān)聽器的手段,缺點是只能單一繼承. import java.awt.*; import java.awt.event.*; public class MouseClickHandler extends MouseAdaper public void mouseClicked(MouseEvent e) ,79,事件適配器(Event Adapters),Java.awt.event包中定義的適配器類有: Compone
40、ntAdapter(組件適配器) ContainerAdapter(容器適配器) FocusAdapter(焦點適配器) KeyAdapter(鍵盤適配器) MouseAdapter(鼠標(biāo)適配器) MouseMotionAdapter(鼠標(biāo)運動適配器) WindowAdapter(窗口適配器),80,模擬考題,Question 19) Which of the following are true? 1) A component may have only one event listener attached at a time 2) An event listener may be rem
41、oved from a component 3) The ActionListener interface has no corresponding Adapter class 4) The processing of an event listener requires a try/catch block,81,模擬考題,Answer to Question 19) 2) An event listener may be removed from a component 3) The ActionListener interface has no corresponding Adapter
42、class,82,AWT 組件庫,83,按鈕(Button),Button b = new Button(Quit); ActionEvent事件 ActionListener接口 getActionCommand() setActionCommand(),84,復(fù)選框 (Checkbox),setLayout(new GridLayout(3,1); add(new Checkbox(“one”,null,true); add(new Checkbox(“two”); add(new Checkbox(“three”);,85,復(fù)選框 (Checkbox),ItemEvent ItemLis
43、tener getStateChange()獲取當(dāng)前狀態(tài) getItem()獲得被修改復(fù)選框的字符串對象,86,class Handler implements ItemListener public void itemStateChanged(ItemEvent ev) String state = deselected; if (ev.getStateChange() = = ItemEvent.SELECTED) state = selected System.out.println(ev.getItem()+ +state); ,87,復(fù)選框組(CheckboxGroup),setLa
44、yout(new GridLayout(3, 1); CheckboxGroup cbg = new CheckboxGroup(); add(new Checkbox(one, cbg, true); add(new Checkbox(two, cbg, false); add(new Checkbox(three, cbg, false);,88,下拉式菜單,Choice Colorchooser=new Choice(); Colorchooser.add(“Green”); Colorchooser.add(“Red”); Colorchooser.add(“Blue”); 用Item
45、Listener接口來進行監(jiān)聽,89,Canvas,如創(chuàng)建一個自定義組件,一個應(yīng)用程序必須繼承Canvas類才能獲得有用的功能。如果想在畫布上完成一些圖形處理,則Canvas類中的paint()方法必須被重寫。 Canvas組件監(jiān)聽各種鼠標(biāo),鍵盤事件。當(dāng)在Canvas組件中輸入字符時,必須先調(diào)用requestFocus()方法。,90,例12.14 import java.awt.*; import java.awt.event.*; import java.util.*; public class MyCanvas implements KeyListener, MouseListener
46、Canvas c; String s=“”; public static void main(String args) Frame f=new Frame(“Canvas”); MyCanvas mc=new Mycanvas(); mc.c=new Canvas(); f.add(“Center”,mc.c);,91,f.setSize(150,150); mc.c.addMouseListerner(mc); mc.c.addKeyListener(mc); f.setVisible(true); public void mouseClicked(MouseEvent ev) System
47、.out.println(“MouseClicked”); c.requestFocus(); public void keyTyped(KeyEvent ev) System.out.println(“KeyTyped”); s+=ev.getKeyChar(); c.getGraphics().drawString(s,0,20); ,92,public void keyPressed(KeyEvent ev) System.out.println(“KeyPressed”); public void keyReleased(KeyEvent ev) System.out.println(
48、“KeyReleased”); public void mousePressed(MouseEvent ev) System.out.println(“MousePressed”); public void MouseReleased(MouseEvent ev) System.out.println(“MouseReleased”); public void mouseEntered(MouseEvent ev) System.out.println(“MouseEntered”); public void mouseExited(MouseEvent ev) System.out.prin
49、tln(“MouseExited”); ,93,TextField,單行文本輸入?yún)^(qū) 當(dāng)回車鍵被按下時,會發(fā)生ActionEvent事件,可以通過ActionListener中的actionPerformed()方法對事件進行相應(yīng)處理。 可以使用setEditable(boolean)方法設(shè)置為只讀屬性。,94,TextField,TextField tf1,tf2,tf3,tf4: tf1=new TextField(); tf2=new TextField(“”,20);/顯示區(qū)域為20列 tf3=new TextField(“Hello!”);/按文本區(qū)域顯示 tf4=new TextFi
50、eld(“Hello!”,30); /*初始文本為Hello!, 顯示區(qū)域為30列,95,TextArea,TextArea可以顯示多行多列的文本。使用setEditable(boolean)方法,可以將其設(shè)置為只讀的。在TextArea中可以顯示水平或垂直的滾動條。 要判斷文本是否輸入完畢,可以在TextArea旁邊設(shè)置一個按鈕,通過按鈕點擊產(chǎn)生的ActionEvent對輸入的文本進行處理。,96,列表(List),List lst=new List(4,false); lst.add(“Venus”); lst.add(“Earth”); lst.add(“JavaSoft”); lst.
51、add(“Mars”); cnt.add(lst);,97,Frame,頂級窗口,可以顯示標(biāo)題 WindowEvent事件 Frame無法直接監(jiān)聽鍵盤輸入事件。,98,Dialog,是Window類的子類。 對話框和一般窗口的區(qū)別在于它依賴于其它窗口。 對話框分為非模式(non-modal)和模式(modal)兩種。,99,文件對話框(Filedialog),FileDialog d=new FileDialog(ParentFr,“FileDialog); d.setVisible(true); String filename=d.getFile();,100,菜單,無法直接將菜單添加到容器的某一位置,也無法使用布局管理器對其加以控制。菜單只能被添加到“菜單容器”中。,101,MenuBar,只能被添加到Frame對象中,作為整個菜單樹的根基。 Frame fr = new Frame(MenuBar); MenuBar mb = new MenuBar(); fr.setMenuBar(mb); fr.setSize(150,100); fr.setVisible(true);,102,Menu,下拉菜單。它可以被添加到MenuBar中或其它Menu中。 Frame fr = new Fram
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球稅務(wù)合規(guī)技術(shù)方案報告
- 餐飲上菜分菜培訓(xùn)課件
- 餐廳爐灶培訓(xùn)課件模板
- 寫字樓環(huán)境服務(wù)流程優(yōu)化方案
- 餐廳安全培訓(xùn)目的課件
- 餐具消毒安全培訓(xùn)課件
- 軟件項目風(fēng)險分析報告模板
- 線上消防安全培訓(xùn)軟件課件
- XX公司安全生產(chǎn)管理人員安全生產(chǎn)責(zé)任制考核(2024年7月)
- 幼兒園節(jié)能減排實施方案范本
- 2025年輸血知識考試試題及答案
- 2025-2026學(xué)年人教版八年級上冊道德與法治期末試卷(含答案和解析)
- 2026貴州鹽業(yè)集團秋招面筆試題及答案
- 沈陽市2025遼寧沈陽市于洪區(qū)社區(qū)殘疾人工作專職干事招聘筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 四川省成都市天府新區(qū)2024-2025學(xué)年七上期末數(shù)學(xué)試卷(原卷版)
- 慢性病患者健康管理工作方案
- 安全防范設(shè)計評估師基礎(chǔ)理論復(fù)習(xí)試題
- 2026年內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案詳解
- 2025年綿陽市中考英語試題(附答案)
- DB53-T 1269-2024 改性磷石膏用于礦山廢棄地生態(tài)修復(fù)回填技術(shù)規(guī)范
- 2025年及未來5年市場數(shù)據(jù)中國過氧化苯甲酰行業(yè)市場深度分析及發(fā)展前景預(yù)測報告
評論
0/150
提交評論