




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 Java事件处理实验目的1 掌握 Java语言中的事件处理方法2 掌握 Java语言中事件源、监视器和处理事件的接口的概念实验导读1 Java 事件处理简介 学习组件除了了解组件的属性和功能外, 学习组件除了了解组件的属性和功能外, 一个 更重要的方面是学习怎样处理组件上发生的界面事件。 当用户在文本框中输入文本后按 Enter 键、单击按钮、在一个下拉列表框中选择一个条目等操作时,都发生界面事件。在学 习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。事件源: 能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说, 事件源必须是一个对象,而且
2、这个对象必须是Java认为能够发生事件的对象。监视器:需要一个对象对事件源进行监视, 以便对发生的事件作出处理。 事件源通过调用相应的 方法将某个对象作为自己的监视器。例如,对于文本框,这个方法是:addActionListener( 监视器 );对于获取了监视器的文本框,当文本框获得输入焦点之后,如果用户按 Enter 键, Java 运行系统就自动用 ActionEvent 类创建一个对象,即发生了 ActionEvent 事件。也就是说,事 件源获得监视器后, 相应的操作就会导致事件的发生, 并通知监视器, 监视器就会做出相应 的处理。处理事件的接口:监视器负责处理事件源发生的事件。 监
3、视器是一个对象, 为了让监视器这个对象能对事 件源发生的事件进行处理, 创建该监视器对象的类必须声明实现相应的接口, 即必须在类体 中给出该接口中所有方法的方法体, 那么当事件源发生事件时, 监视器就自动调用类实现的 某个接口中的方法。2 文本框上的 ActionEvent 事件java.awt.event 包中提供了许多事件类和处理各种事件的接口。对于文本框,这个接口 的名字是 ActionListener ,这个接口中只有一个方法:public void actionPerformed(ActionEvent e)当在文本框中输入字符并按 Enter 键时, java.awt.event
4、包中的 ActionEvent 类自动创建 一个事件对象, 并将它传递给 actionPerformed(ActionEvent e) 方法中的参数 e,监视器自动调 用这个方法对发生的事件做出处理。所以,称文本框这个事件源可以发生 ActionEvent 类型事件。为了能监视到这种类型的 事件,事件源必须使用 addActionListener 方法获得监视器;创建监视器的类必须实现接口 ActionListener 。只要学会了处理文本框这个组件上的事件, 其他事件源上的事件的处理也就 很容易学会,所不同的是事件源能发生的事件类型不同,所使用的接口不同而已。ActionEvent 类有如下
5、常用的方法:public Object getSource() ActionEvent 对象调用该方法可以获取发生 ActionEvent 事 件的事件源对象的引用,即 getSource()方法将事件源上转型为 Object 对象,并返 回这个上转型对象的引用。public String getActionCommand() ActionEvent 对象调用该方法可以获取发生ActionEvent 事件时,和该事件相关的一个命令字符串,对于文本框,当发生ActionEvent 事件时,文本框中的文本字符串就是和该事件相关的一个命令字符串。3 选择框和下拉列表上的 ItemEvent 事件 选
6、择框从未选中状态变成选中状态或从选中状态变成未选中状态时、 下拉列表选项列表 中选中某个选项时就发生 ItemEvent 事件,即 ItemEvent 类自动创建一个事件对象。发生 ItemEvent 事件的事件源获得监视器的方法是addItemListener( 监视器 )。处理ItemEvent 事件的接口是 ItemListener ,创建监视器的类必须实现 ItemListener 接口,该接口 中只有一个方法。当选择框发生 ItemEvent 事件时,监视器将自动调用接口方法: itemStateChanged(ItemEvent e)对发生的事件进行处理。4 鼠标事件任何组件上都可
7、以发生鼠标事件, 如:鼠标进入组件、 退出组件、 在组件上方单击鼠标、 拖动鼠标等都触发组件发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。使用 MouseListener 接口可以处理 5 种操作触发的鼠标事件:( 1)在事件源上按下鼠标键。( 2)在事件源上释放鼠标键。( 3)在事件源上击鼠标键。( 4)鼠标进入事件源。(5)鼠标退出事件源。鼠标事件的类型是 MouseEvent ,即当发生鼠标事件时, MouseEvent 类自动创建一个事 件对象。MouseListener 接口中的方法:( 1)mousePressed(MouseEvent) 负责处理在组件上按下鼠标触发的
8、鼠标事件, 当在组 件上按下鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。( 2) mouseReleased(MouseEvent) 负责处理在组件上释放鼠标触发的鼠标事件,当在组件上释放鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。(3) mouseEntered(MouseEvent) 负责处理鼠进入组件触发的鼠标事件,当鼠标进入 组件上方时,监视器将自动调用接口中的这个方法对事件作出处理。( 4) mouseExited(MouseEvent) 负责处理鼠标离开组件触发的鼠标事件,当鼠标离开 组件时,监视器自动调用接口中的这个方法对事件作出处理。( 5) mouse
9、Clicked(MouseEvent) 负责处理在组件上单击或连击鼠标触发的鼠标事件, 当单击或连击鼠标时,监视器自动调用接口中的这个方法对事件作出处理。MouseMotionListener 接口:使用 MouseMotionListener 接口可以处理以下两种操作触发的鼠标事件:( 1)在事件源上拖动鼠标。( 2)在事件源上移动鼠标。MouseMotionListener 接口中有如下方法:( 1) mouseDragged(MouseEvent) 负责处理在组件上拖动鼠标触发的鼠标事件,当在 组件上拖动鼠标时,监视器调用接口中的这个方法对事件作出处理。( 2) mouseMoved(M
10、ouseEvent) 负责处理在组件上运动鼠标触发的鼠标事件,当在组 件上运动鼠标时,监视器调用接口中的这个方法对事件作出处理5 焦点事件组件可以触发焦点事件。组件可以使用public void addFocusListener(FocusListener listener) 增加焦点事件监视器。当组件获得焦点监视器后, 如果组件从无输入焦点变成有输入焦点或从有输入焦点变成 无输入焦点都会触发 FocusEvent 事件。创建监视器的类必须要实现FocusListener 接口,该接口有两个方法:public void focusGained(FocusEvent e) public void
11、 focusLost(FocusEvent e)当组件从无输入焦点变成有输入焦点触发 FocusEvent 事件时,监视器调用类实现的接 口方法: focusGained(FocusEvent e);当组件从有输入焦点变成无输入焦点触发 FocusEvent 事件时,监视器调用类实现的接口方法: focusLost(FocusEvent e)。用户通过单击组件可以使得该组件有输入焦点,同时也使得其他组件变成无输入焦点。 一个组件也可以调用public boolean requestFocusInWindow()方法获得输入焦点。Java1.2 事件模式中,必须6 键盘事件 当按下、释放或敲击键
12、盘上一个键时就发生了键盘事件,在要有发生事件的事件源。 当一个组件处于激活状态时, 敲击键盘上一个键就导致这个组件上 发生了键盘事件。事件源使用 addKeyListener 方法获得监视器。使用 KeyListener 接口处理键盘事件 .接口 KeyListener 中有 3 个方法:public void keyPressed(KeyEvent e),public void keyTyped(KeyEvent e),public void KeyReleased(KeyEvent e)。当按下键盘上某个键时,监视器就会发现,然后 keyPressed 方法会自动执行,并且 KeyEven
13、t类自动创建一个对象传递给 keyPressed方法中的参数 e。keyTyped 方法是 keyPressed 和 KeyReleased 方法的组合,当键被按下又释放时, keyTyped 方法被调用。用 KeyEvent 类的 public int getKeyCode() 方法,可以判断哪个键被按下、敲击或释放, getKeyCode方法返回一个键码值。也可以用 KeyEvent类的 public char getKeyChar()判断哪个 键被按下、敲击或释放, getKeyChar 方法返回键上的字符。键 盘 事 件 KeyEvent 对 象 调 用 getModifiers()
14、方 法, 可 以 返 回 整 数 值 ALT_MASK、 CTRL_MASK、 SHIFT_MASK,它们分别是 InputEvent 类的类常量。程序可以通过 getModifiers() 方法返回的值处理组合键事件。 例如,对于 KeyEvent 对象 e, 当按下 CTRL+X组合键时,下面的逻辑表达式为 true :e. getModifiers() = InputEvent.CTRL_MASK&e.getKeyCode() = keyEvent.VK_XJava 事 件处理 就是基于这种授 权模式 ,即发生 相应事 件的事件源对 象,比如 sourceObject,通过调用相应的方法
15、:sourceObject. addXXXListener(监视器 );将某个对象作为自己的监视器。创建监视器对象的类必须声明实现相应的事件接口:class A implements XXXListener当事件源发生事件时, 监视器将调用接口中相应的方法做出处理。 Java 使用了接口回调 技术设计了它的处理事件模式,注意到addXXXListener(XXXListener listener) 方法中的参数是一个接口类型, listener 可以引用任何实现了 XXXListener 接口的类所创 建的对象,当事件源发生事件时,接口 listener 立刻回调类实现的接口中的某个方法。事件
16、的处理过程如下图所示:发生 XXX事件监视器回调接口方法图 事件处理示意图内部类实例做监视器:Java支持在一个类中声明另一个类, 这样的类成为内部类, 而包含内部类的类成为内部 类的外嵌类, 外嵌类的成员变量在内部类中仍然有效, 内部类中的方法也可以调用外嵌类中 的方法。匿名类是内部类的特殊情形,即省略类声明,可以直接用类体创建对象,因此,可 以使用匿名内部类的对象做监视器。例如:xxx .addActionListener( new ActionListener() Overridepublic void actionPerformed(ActionEvent e) );实验内容1. 图形
17、用户界面设计程序 (ArtFont.java)在实验三第 1题的基础上, 添加事件处理机制, 并逐步完善程序功能。 分别用 ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。要求实现如下功能:当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后, 按钮的前景色和文本域的前景色设置为选定的颜色。当选择字体样式下拉框中的某一字体样式时, 文本域中的文字设置为指定的字 体样式。当选择字体大小下拉框中的某一字体大小时, 文本域中的文字设置为指定的字 体
18、大小。当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外 观。代码提示:1) 用 ArtFont 类的对象做监视器implementspublic class CopyOfArtFont extends JFrameActionListener, ItemListener JComboBox windowStyle; / 窗体样式下拉框粗体按钮颜色按钮; / 文字输入框JCheckBox boldBx ; / JButton colorBtn ; / JTextField inputTextprivate JPanel getNorthPanel() JPanel panel
19、=new JPanel();inputText .addActionListener( this ); colorBtn .addActionListener( this ); return panel;private JPanel getCenterPanel() JPanel panel =new JPanel();this );boldBx.addItemListener( return panel; private JPanel getSouthPanel() JPanel panel =new JPanel();windowStyle .addItemListener( this )
20、; return panel;Override public void itemStateChanged(ItemEvent e) if (e.getSource() = windowStyle ) String s = (String) e.getItem(); String className = ; if (s.equals( Windows 显示效果 ) className =com.sun.java.swing.plaf.windows.WindowsLookAndFeel ; else if (s.equals( Unix 显示效果 )className = com.sun.jav
21、a.swing.plaf.motif.MotifLookAndFeel ;else if (s.equals( 默认显示效果 ) className =UIManager. getCrossPlatformLookAndFeelClassName (); try UIManager. setLookAndFeel (className); SwingUtilities. updateComponentTreeUI ( this ); catch (Exception de) System. out .println( Exception happened! );Override public
22、void actionPerformed(ActionEvent e) 2) 用匿名内部类的对象做监视器 public class CopyOfArtFont extends JFrame JComboBox fontType ; / 字体样式下拉框 , JCheckBox boldBx ; / 粗体按钮 JButton colorBtn ; / 颜色按钮; JTextField inputText ; / 文字输入框; private JPanel getNorthPanel() JPanel panel =new JPanel();inputText .addActionListener(
23、new ActionListener() Overridepublic void actionPerformed(ActionEvent e) ); return panel;private JPanel getCenterPanel() JPanel panel =new JPanel();boldBx .addItemListener( new ItemListener() Overridepublic void itemStateChanged(ItemEvent e) ); return panel;private JPanel getSouthPanel() JPanel panel
24、 = new JPanel();fontType .addItemListener( new ItemListener() Overridepublic void itemStateChanged(ItemEvent e) );return panel;答案代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;import java.awt.event.*;public class ArtFont extends JFrame implements KeyListener, ChangeListener,Ite
25、mListener,ActionListenerJComboBox fontType ; / 字体样式下拉框 ,JComboBox fontSize ; / 字体大小下拉框JComboBox windowStyle ; / 窗体样式下拉框JCheckBox boldBx ; / 粗体按钮JCheckBox italicBx ; / 斜体按钮JButton colorBtn ; / 颜色按钮; StringfontNames ; / 字体名称 ;StringfontSizes ; / 字体大小;JLabel label ; / 输入提示标签; JTextField inputText ; / 文
26、字输入框;JTextArea txtArea; / 文字显示区JPanelJPanelJPanelnorthPanel ; / 字体设置; centerPanel ; / 显示效果区 southPanel ; / 样式设置Font font ;int boldStyle , italicStyle , underlineStyle ;int fontSizeStyle ;String fontNameStyle ;Color colorStyle = Color. black ; / 设置字体的默认颜色为黑色 ; String style = 默认显示效果 , Windows 显示效果 , U
27、nix 显示效果 ;public ArtFont() super ( 字体设置 );/ 设置默认字体 boldStyle = 0; italicStyle = 0; underlineStyle = 0; fontSizeStyle= 10;fontNameStyle = 宋体 ; font = new Font( fontNameStyle , boldStyle + italicStyle , fontSizeStyle );northPanel = getNorthPanel(); centerPanel = getCenterPanel(); southPanel = getSouth
28、Panel();/ 设置容器 ;NORTH); / / 【补充代码】 / 将CENTER); / 【补充代码】SOUTH);/ 【补充代码】 /Container container = getContentPane(); container.setLayout( new BorderLayout(); container.add( northPanel ,BorderLayout. northPanel 添加到窗体的北部container.add( centerPanel ,BorderLayout. / 将 centerPanel 添加到窗体的北部container.add( southP
29、anel ,BorderLayout. 将 southPanel 添加到窗体的北部setSize(500, 300);/ 【补充代码】 / 将窗体位于屏幕的中央setLocationRelativeTo( null ); setVisible( true ); private JPanel getNorthPanel() JPanel panel =new JPanel();label = new JLabel( 输入 ,JLabel./ 设置输入提示标签 panel.add( label );/ 设置文本输入框; inputText =new JTextField(10); panel.ad
30、d( inputText );/ inputText.addActionListener(this); boldBx =new JCheckBox( 粗体 ); panel.add( boldBx );italicBx =new JCheckBox( 斜体); panel.add( italicBx );colorBtn =new JButton( 颜色 ); panel.add( colorBtn );return panel;private JPanel getCenterPanel() JPanel panel =new JPanel();panel.setLayout(new Bord
31、erLayout();txtArea =new JTextArea();panel.add( txtArea ,BorderLayout. CENTER); return panel;private JPanel getSouthPanel() JPanel panel =new JPanel();GraphicsEnvironmentge=GraphicsEnvironment. getLocalGraphicsEnvironment();fontNames =ge.getAvailableFontFamilyNames();/ 获得系统中所有字体的名字;fontType =new JCom
32、boBox( fontNames ); fontType .setEditable( false ); fontType .setMaximumRowCount(10);panel.add( fontType );fontSizes =new String63;for ( int i=0;i63;i+) fontSizes i=Integer. toString (i+10); fontSize =new JComboBox( fontSizes ); fontSize .setEditable( false ); fontSize .setMaximumRowCount(10); panel
33、.add( fontSize );windowStyle = new JComboBox( style ); panel.add( windowStyle );return panel;public static void main(String args) ArtFont artFont = new ArtFont(); artFont.action();artFont.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); public void action() inputText .addKeyListener(this);boldBx .ad
34、dChangeListener(this);italicBx .addChangeListener( this ); fontType .addItemListener(this);fontSize .addItemListener(this);windowStyle .addItemListener( this ); colorBtn .addActionListener( this ); Override public void keyTyped(KeyEvent e) Overridepublic void keyPressed(KeyEvent e) if (e.getSource()
35、= inputText ) txtArea .append( inputText .getText(); Override public void keyReleased(KeyEvent e) Override public void stateChanged(ChangeEvent e) if (e.getSource()= boldBx ) if ( boldBx .isSelected() boldStyle =Font. BOLD; else boldStyle =0; else if (e.getSource()= italicBx ) if ( italicBx .isSelec
36、ted() italicStyle =Font. ITALIC ; else italicStyle =0;font =new Font( fontNameStyle , boldStyle +italicStyle , fontSizeStyle );txtArea .setFont( font ); Override public void itemStateChanged(ItemEvent e)if (e.getSource()= fontType ) fontNameStyle =fontNames fontType .getSelectedIndex();else if (e.ge
37、tSource()= fontSize ) fontSizeStyle =fontSize .getSelectedIndex()+1;else if (e.getSource()= windowStyle ) underlineStyle =windowStyle .getSelectedIndex();font =new Font( fontNameStyle , boldStyle +italicStyle , fontSizeStyle );txtArea .setFont( font ); Override public void actionPerformed(ActionEven
38、t e)JColorChooser colorChooser=new JColorChooser();colorStyle =colorChooser. showDialog ( null , 字体颜色 , Color. BLACK);txtArea .setForeground( colorStyle );2. 日历应用程序设计在实验三第 2 题的基础上,添加事件处理机制,并逐步完善程序功能。分别用CalendarFrame 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能:在文本框 inputYear 中输入年份,验证年份的有效性;按回车键后,显示输入 年份的正确日历单击
39、 previousMonth 按钮可以显示当前月的上一月的日历;如果月份小于1,则显示上一年的 12 月1,则单击 nextMonth 按钮,可以显示当前月的下一月的日历;如果月份大于显示下一年的 1 月答案代码:CalendarBean.javaimport java.util.Calendar;public class CalendarBean String day ;int year = 2013, month = 0;public void setYear( int year) this . year = year;public int getYear() return year ;p
40、ublic void setMonth( int month) this . month = month;public int getMonth() return month ;/ 返回某年某月 1号开始的日期数组public String getCalendar() String a =new String42;Calendar 日历 = Calendar. getInstance ();/ 注意: 1月份是从 0开始,所以要减 1日历.set( year , month - 1, 1);int 星期几 = 日历.get(Calendar.DAY_OF_WEE)K - 1;int day =
41、 0;if ( month = 1 | month = 3 | month = 5 | month = 7 | month = 8 | month = 10 | month = 12) day = 31;if ( month = 4 | month = 6 |month = 9 |month = 11) day = 30;if ( month = 2) if ( year % 4 = 0) & ( year % 100 != 0) | (year % 400 =0) day = 29; else day = 28;星期几 + day; i+) for ( int i = 星期几 , n = 1
42、; i ai = String. valueOf (n); n+;return a;CalendarFrame.java import import import publicjava.awt.*; java.awt.event.*; javax.swing.*; class CalendarFrame extends JFrame implements ActionListener,KeyListener/*/ private Label Label Button Button Labelstatic final labelDay = labelYear ;titleName = nextM
43、onth , previousMonth showMessage ;inputYear ; calendar ;日,long serialVersionUID new Label42;new Button7;= 1L;TextField CalendarBean String name = int year = 2013, String days ; 四 , 五 , 六 ;month = 1;public CalendarFrame() calendar calendar calendar days = new CalendarBean(); .setYear( year ); .setMon
44、th( month ); calendar .getCalendar();ScrollPane scrollPane = new ScrollPane(); scrollPane.add(getCenterPanel();add( Center ,scrollPane); / 【补充代码】 心区域add(getNorthPanel(),BorderLayout.加pNorth 在北面区域/ 窗口添加 scrollPane 在中NORTH); / 【补充代码】 / 窗口添add(getSouthPanel(),BorderLayout. 加 pSouth 在南区域。SOUTH);private
45、Panel getNorthPanel() Panel panel = new Panel();/ 【补充代码 】panel.setLayout( new FlowLayout(FlowLayout.showMessage =new Label( 请输入年份: inputYear =new TextField(8); previousMonth =new Button( nextMonth);/ 【补充代码】 / 窗口添CENTER,10,5); 上月 );=new Button( 下月 );panel.add( panel.add( panel.add( panel.add(showMess
46、age ); inputYear ); previousMonth ); nextMonth );return panel;private Panel getCenterPanel() Panel panel = new Panel(); panel.setLayout(new GridLayout(7,7);布局设置为 7行7列的 GridLayout 布局 ( int i = 0; i 7; i+) titleName i =fornew Button(/panel.add( titleName i);/namei); 【补充代码】补充代码】 / 将 panel 的/ panel 添加组件
47、titleNameifor( int i = 0; i 42; i+) labelDay i =new Label(panel.add( labelDay i);/, Label. CENTER); 补充代码】 / panel 添加组件labelDayifor( int i = 0; i 42; i+) labelDay i.setText( days i);return panel; private Panel getSouthPanel() Panel panel = new Panel();/panel.setLayout(new FlowLayout(FlowLayout.CENTER
48、);年labelYear =new Label( 月份: +calendar .getYear()+ +calendar .getMonth()+ 月);panel.add( labelYear ); / 【补充代码 】 return panel;public void displayCalender() inputYear .addKeyListener( this ); nextMonth .addActionListener( this ); previousMonth .addActionListener( this );/public void updateCalender() /f
49、or (int i = 0; i 42; i+) /labelDayi.setText();/for (int i = 0; i 11) year =year +1;month =month -11;else month =month +1;else if (e.getSource()= previousMonth )if ( month =1) year =year -1; month =month +11; else month =month -1;calendar .setYear( year );calendar .setMonth( month );labelYear .setTex
50、t( 月份: +calendar .getYear()+ 年 +calendar .getMonth()+ 月);days = calendar .getCalendar(); /updateCalender();Override public void keyTyped(KeyEvent e) Overridepublic void keyPressed(KeyEvent e)if (e.getSource()= inputYear )/if (e.getKeyCode()=KeyEvent.VK_ENTER)/year =Integer. parseInt ( inputYear .get
51、Text(); calendar .setYear( year );年labelYear .setText( 月份: +calendar .getYear()+ +calendar .getMonth()+ 月);days = calendar .getCalendar(); /updateCalender();/ Override public void keyReleased(KeyEvent e) CalendarMainClass.java public class CalendarMainClass public static void main(String args) Calen
52、darFrame frame =new CalendarFrame();frame.setTitle( 日历应用程序 ); frame.setBounds(100, 100, 360, 300); frame.setVisible( true ); frame.displayCalender(); frame.validate();3. 英语单词拼写训练程序设计编写一个应用程序,要求如下:窗口中有一个 TextField 对象和一个按钮对象,将这两个对象添加到一个面板,然 后将该面板添加到窗口的北面。用户在 TextField 对象中输入一个英文单词,然后回车或单击按钮,程序将创建若 干个标签
53、, 其个数刚好等于英文单词所包含的字母的标签, 而且每个标签上的名字刚好 是英文单词中的一个字母。 要求将这些标签按一行添加到一个面板中, 然后将该面板添 加到窗口的中心。用户用鼠标单击一个标签后,然后按下键盘上的“” 、“” 键交换相邻标签上的 字母,使得这些标签上字母的排列顺序和英文单词中字母的顺序相同。请按模板要求,将代码补充完整。程序运行效果如下:1) RandomString.javapublic class RandomString String str = ;public String getRandomString(String s) StringBuffer strBuffer =new StringBuffer(s);int m = strBuffer.length();for ( int k = 0; k m; k+) int index
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届湖北黄冈高考考前模拟化学试题含解析
- 2025年面板检测系统项目合作计划书
- 2025届湖北省黄冈市新联考高三第一次调研测试化学试卷含解析
- 五四红旗团支部
- 2025年空心桨叶干燥机项目建议书
- 急救护理学蛇咬伤
- 陕西铁路工程职业技术学院《品牌与互动营销》2023-2024学年第二学期期末试卷
- 隆昌县2025届五年级数学第二学期期末统考试题含答案
- 雅安职业技术学院《基本体操与健美操》2023-2024学年第一学期期末试卷
- 集美大学《弹性力学基础与有限元》2023-2024学年第一学期期末试卷
- 国际航空货运代理实务
- 《咯血的诊治》课件2
- 江苏省连云港市赣榆智贤高中20222023学年高一下学期3月阶段检测语文试题(解析)
- 火力发电厂消防知识培训课件
- MSOP(测量标准作业规范)测量SOP
- 仓库温湿度记录表
- 营养风险筛查(NRS2002)解读
- 复地A2A3附着式升降脚手架施工方案济南复星国际中心A2A3地块总承包工程
- 纸杯制作手工课ppt
- 动物防疫与检疫技术教案
- 销售话术900句顺口溜
评论
0/150
提交评论