Java語言程序設(shè)計實用教程第三版及代碼精品PPT課件.ppt_第1頁
Java語言程序設(shè)計實用教程第三版及代碼精品PPT課件.ppt_第2頁
Java語言程序設(shè)計實用教程第三版及代碼精品PPT課件.ppt_第3頁
Java語言程序設(shè)計實用教程第三版及代碼精品PPT課件.ppt_第4頁
Java語言程序設(shè)計實用教程第三版及代碼精品PPT課件.ppt_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Java語言程序設(shè)計實用教程第13講 圖形用戶界面3本章學(xué)習(xí)要點:識別用戶界面屏幕的組件以及主要的類理解布局管理器,在用戶接口上組織組件理解事件監(jiān)聽器,理解委派事件模型掌握J(rèn)ava圖形用戶界面開發(fā)方法13.1 圖形用戶界面組件圖形用戶界面GUI (見P349圖13-1) 至今為止所編寫的Java程序只能從鍵盤輸入,在控制臺屏幕上顯示結(jié)果。圖形用戶界面(GUI,Graphical User Interface)是為應(yīng)用程序提供一個圖形化的界面,程序通過GUI與用戶交互,GUI能使一個應(yīng)用程序具有與眾不同的“外觀”與“感覺”,是目前應(yīng)用程序大多數(shù)是采用的方式。 WinUI:標(biāo)準(zhǔn)的MS Window

2、s或X-Windows的應(yīng)用系統(tǒng),應(yīng)用使用來自操作系統(tǒng)的GUI元素和其它加入的元素WebUI:Web應(yīng)用系統(tǒng),基于瀏覽器操作Java程序圖形界面的坐標(biāo)設(shè)置原點(0,0)X軸Y軸用戶圖形接口AWTAWT(Abstract Window Toolkit)是一個獨立平臺的窗口工具組件集,它依賴于對等組件(Peer),而對等組件是一個本地GUI組件,由AWT類管理。AWT的作用是給用戶提供基本的界面組件,如按鈕、列表框、菜單等。AWT最初只包括與本地對等組件相關(guān)聯(lián)的組件,稱為重量組件(Heavyweight Component),這些組件在它們自己的本地不透明窗口中繪制,用AWT創(chuàng)建的應(yīng)用外觀在不同的

3、操作系統(tǒng)平臺上是不同。 用戶圖形接口SwingJava基類(Java Foundation Classes,JFC)是關(guān)于GUI組件和服務(wù)的完整集合,主要由5個API構(gòu)成:AWT、Swing、Java 2D、Drag and Drop、AccessibilitySwing是建立在AWT基礎(chǔ)之上的,它利用了AWT的底層組件,包括圖形、顏色、字體、工具包和布局管理器等。使用AWT最好的部分來建立一個新的輕量組件集,而丟棄了AWT中有問題的重量組件部分。 通過引入新特性和豐富的功能,Swing提供了比AWT更全面的組件集合。Swing API是圍繞實現(xiàn)AWT各個部分的API構(gòu)建的,這保證了所有早期的

4、AWT組件仍然可以使用。JFC的兩個特性javax.swing.plaf:提供一個接口和許多抽象類,Swing 用它們來提供自己的可插入外觀功能。例如可用提供本地操作系統(tǒng)的外觀,在Windows上執(zhí)行應(yīng)用,看上去像是專為Windows環(huán)境定制,其它Linux、UNIX也類似。 拖拽與放置(Drag-and-Drop):把數(shù)據(jù)從源 轉(zhuǎn)變到目標(biāo)。源和目標(biāo)可以是兩個不同應(yīng)用的控件,還可在剪貼板之間來回傳遞數(shù)據(jù)。java.awt.dnd和java.awt.datatransfer包可用于拖拽與放置操作基本概念 組件(Component):可視化控件,例如文本框、復(fù)選框、列表框、按鈕等稱為組件,是 Ja

5、va的圖形用戶界面的最基本組成部分,組件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來容器(Container):容器是一種特殊的組件,一種能夠容納其他組件或容器的組件。每個組件繼承它的父容器的性質(zhì),如字體、顏色容器控制存放在其中的組件的位置布局管理器(Layout Manager):為了使圖形用戶界面具有良好的平臺無關(guān)性,提供了專門用來管理組件在容器中的布局的工具。Java常用控件介紹Textbox文本框,接收單行字符串輸入TextArea文本區(qū),接收多行字符串的輸入Push button按鈕,觸發(fā)一系列動作Label標(biāo)題,在容器上顯示靜態(tài)文本Check box復(fù)選框,接收ye

6、s/no值的數(shù)據(jù),可多選Radio button單選按鈕,只允許從一組選項中選擇一個Combo box下拉列表框,只允許單選,可輸入新值List box列表框,允許多選,不可輸入新值Swing組件基本控制ButtonsListMenuSliderText fieldsCombo boxSwing組件信息顯示LabelProgress barTool tipSwing組件可編輯格式化信息顯示Color chooserTableTextTreeSwing程序舉例import javax.swing.*; public class HelloWorldSwing public static void

7、 main(String args) JFrame frame = new JFrame(HelloWorldSwing); final JLabel label = new JLabel(Hello World); frame.getContentPane().add(label); frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); frame.pack(); frame.setVisible(true); Swing應(yīng)用程序基本結(jié)構(gòu)引

8、入Swing 包:import javax.swing.*; import java.awt.*; import java.awt.event.*; 選擇Look&Feel設(shè)置窗口布局設(shè)置窗口容器JFrame、JPanel設(shè)置Swing組件,將其加入JPanel注意:JFrame的默認(rèn)大小為00并且是不可見的,用setBounds方法設(shè)置框架的大小,setVisible(true)顯示窗口Swing中的Look&FeelCDE/Motif look and feelWindows look and feelJava look and feel Swing中的Look&Feel使用UIManag

9、er.setLookAndFeel( ) 方法進(jìn)行設(shè)置。在該方法中可以使用的參數(shù):UIManager.getCrossPlatformLookAndFeelClassName() - Java Look & Feel. UIManager.getSystemLookAndFeelClassName() 當(dāng)前平臺的look&feeljavax.swing.plaf.metal.MetalLookAndFeel -Java Look & Feel. com.sun.java.swing.plaf.windows.WindowsLookAndFeel - Windows Look & Feel. c

10、om.sun.java.swing.plaf.motif.MotifLookAndFeel - CDE/Motif Look & Feel. javax.swing.plaf.mac.MacLookAndFeel - Mac OS Look & FeelSwing組件層次結(jié)構(gòu)(P351)Java.awt.ContainerJavax.swing.JComponentJTextComponentAbstractButtonJPanelJComboBoxJLabelJTreeJTextAreaJTextFieldJPasswordFieldJToggleButtonJButtonJMenuItem

11、JCheckBoxJRadioButtonJComponent組件類的層次結(jié)構(gòu)java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-javax.swing.JComponentJComponent大多數(shù)Swing組件類父類一些GUI組件標(biāo)簽(JLabel)文本框(JTextField)按鈕(JButton)復(fù)選框(JCheckBox)組合框(JComboBox)文本(JTextArea)框架(JFrame)面板(JPanel)標(biāo)簽(JLabel)標(biāo)簽為GUI提供文本(主要)或圖像(也可以)信息對應(yīng)類(JLabel)

12、 (JComponent的子類)可以顯示:單行的只讀的文本信息圖像同時顯示文本與圖像信息程序一般不修改標(biāo)簽的內(nèi)容用法:JLabel label=new JLabel(“標(biāo)簽名”); panel.add(label) ;/將標(biāo)簽加入容器文本框(JTextField)文本框(JTextField)顯示單行的文本信息JTextField extends JTextComponent密碼框(JPasswordField)輸入的字符顯示為“*”用法舉例:JTextField textobj=new JTextField(10);10指定文本域的長度 panel.add(textobj);textobj.

13、setText(“yyyy-mm-dd”);String date=textobj.getText();按鈕(JButton)當(dāng)鼠標(biāo)左鍵單擊按鈕組件時,能觸發(fā)特定的事件在Java中, 廣義的按鈕包括:命令式按鈕(JButton)復(fù)選框(JCheckBox)單選按鈕(JRadioButton)用法舉例:CheckboxGroup cbg=new CheckboxGroup();Checkbox check1=new Checkbox(“check1,cbg,true); Checkbox check2= new Checkbox(“check2,cbg,false); panel.add(che

14、ck1);panel.add(check2);組合框(JComboBox)組合框(JComboBox)可以從下拉式的列表框中選取其中的列表項有時也稱為下拉框(drop-down list)類JComboBox中的方法getSelectedIndex( )返回當(dāng)前被選中的項setMaximumRowCount(n)設(shè)置最多顯示列表項的項數(shù)滾動條(Scrollbar)會自動加上滑動條(JSlider)滑動條(JSlider)提供了以圖形方式進(jìn)行數(shù)值選取的功能??梢杂脕肀硎境绦驁?zhí)行的進(jìn)度情況。java.awt.Container是Component的子類,一個容器可以容納多個組件,并使它們成為一個整

15、體。容器可以簡化圖形化界面的設(shè)計,以整體結(jié)構(gòu)來布置界面。所有的容器都可以通過add()方法向容器中添加組件。Swing的容器分頂層容器和其它容器,一下為三個頂層組件:容器(Container)技術(shù)介紹AppletDialogFrameSwing組件通用容器Panel Scroll paneSplit paneTool barTabbed pane框架(JFrame)類 JFrame 是java.awt.Frame的子類在Swing的組件中, JFrame 并不全是由Java編寫的是一種與平臺關(guān)系比較密切的組件(Heavyweight component)java.lang.Object | +

16、-java.awt.Component | +-java.awt.Container | +-java.awt.Window | +-java.awt.Frame | +-javax.swing.JFrame設(shè)置窗口容器JFrame類似于Frame ,JFrame是AWT中Frame的子類。不能直接向JFrame中加入組件,而要向JFrame的content pane或向另外提供的新的content pane中增加組件。content pane中包含除了menu bar之外的所有組件。getContentPane() 獲取JFrame的content pane;setContentPane()

17、 設(shè)置content pane面板(JPanel)一種中間容器,用來組成其它組件可以添加各種組件(包括面板組件)面板(JPanel)的大小由它所包含的組件決定當(dāng)組件個數(shù)增加,面板(JPanel)也會隨之而增大設(shè)置Swing組件frame = new JFrame(.); button = new JButton(.);label = new JLabel(.); pane = new JPanel(); pane.add(button); pane.add(label); frame.getContentPane().add(pane,BorderLayout.CENTER); 建立Swing

18、 GUI Swing包中定義了兩類組件: 頂層容器(JFrame,JApplet,JWindow,JDialog) 輕型組件(J開頭的所有組件,如JButton,JPanel,JMenu等)一般如果使用Swing組件,則程序中只使用Swing組件 和Swing容器。 Swing組件可以加入到一個與頂層容器相關(guān)的content pane中,而不能直接加入到頂層容器中。13.2 布局管理器布局管理器-LayoutManagerJava為了實現(xiàn)跨平臺的特性并且獲得動態(tài)的布局效果,Java將容器內(nèi)的所有組件安排給一個“布局管理器”負(fù)責(zé)管理,如:排列順序,組件的大小、位置,當(dāng)窗口移動或調(diào)整大小后組件如何

19、變化等功能授權(quán)給對應(yīng)的容器布局管理器來管理。不同的布局管理器使用不同算法和策略,容器可以通過選擇不同的布局管理器來決定布局。布局管理器的類型Java中的布局類型包括以下幾種:FlowLayout(流式布局)BorderLayout (邊界布局) GridLayout(網(wǎng)格布局)CardLayout (卡片布局)GridBagLayout(高級方格式界面設(shè)計)BoxLayout(盒式界面設(shè)計):由Swing包提供 null(空布局)FlowLayout布局管理器FlowLayout 是Panel、JPanel、Applet的缺省布局管理器。其組件的放置規(guī)律是從上到下、從左到右進(jìn)行放置。如果容器足

20、夠?qū)?,第一個組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個組件的右邊,如果當(dāng)前行已放置不下該組件,則放置到下一行的最左邊。 當(dāng)容器的大小發(fā)生變化時,用FlowLayout管理的組件會發(fā)生變化,其變化規(guī)律是:組件的大小不變,但是相對位置會發(fā)生變化。例如有三個按鈕都處于同一行,但是如果把該窗口變窄,窄到剛好能夠放下一個按鈕,則第二個按鈕將折到第二行,第三個按鈕將折到第三行。FlowLayout布局管理器FlowLayout的構(gòu)造函數(shù)有:FlowLayout( ):生成一個默認(rèn)的流式布局FlowLayout(int alignment):可以設(shè)定每一行組件的對齊方式 FlowLayou

21、t(int alignment,int horz,int vert):可以指定對齊方式,設(shè)定組件間的水平和垂直距離對齊方式參數(shù)的含義:FlowLayout(FlowLayout.RIGHT,20,40);/*第一個參數(shù)表示組件的對齊方式,指組件在這一行中的位置是居中對齊、居右對齊還是居左對齊,第二個參數(shù)是組件之間的橫向間隔,第三個參數(shù)是組件之間的縱向間隔,單位是象素。*/FlowLayout(FlowLayout.LEFT); /居左對齊,橫向間隔和縱向間隔都是缺省值5個象素FlowLayout(); /缺省的對齊方式居中對齊,橫向間隔和縱向間隔都是缺省值5個象素 FlowLayout myl

22、ayout = new FlowLayout();FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT);setLayout(exlayout); / 為容器設(shè)置新布局 構(gòu)造方法說明(P355,演示)網(wǎng)格布局管理器以矩形網(wǎng)管形式對容器的組件進(jìn)行布置。容器被分成大小相等的矩形格子,一個矩形格子中放置一個組件,從左到右,自頂向下地放置。GridLayout的構(gòu)造函數(shù)如下所示:GridLayout():生成一個單列的網(wǎng)格布局GridLayout(int row,int col):生成一個設(shè)定行數(shù)和列數(shù)的網(wǎng)格布局GridLayout(int row

23、,int col,int horz,int vert):可以設(shè)置組件之間的水平和垂直間隔GridLayout布局管理器示例(演示). . . Button btn; / 聲明按鈕數(shù)組 String str=1,2,3,4,5,6,7,8,9; setLayout(new GridLayout(3,3); btn=new Buttonstr.length; / 創(chuàng)建按鈕數(shù)組 for(int i=0;istr.length;i+) btni=new Button(stri); add(btni); BorderLayout 是Frame、JFrame、Dialog和JApplet的缺省布局管理器。

24、BorderLayout布局管理器把容器分成5個區(qū)域:North,South,East,West和Center,每個區(qū)域只能放置一個組件。BorderLayout布局管理器CenterNorthSouthWestEastBorderLayout() :構(gòu)造一個組件之間沒有間距的新邊界布局。 BorderLayout(int hgap, int vgap) :指定組件之間的水平、垂直間距來構(gòu)造一個邊界布局。 例如:f.setLayout(new BorderLayout();f.add(North, new Button(North);/第一個參數(shù)表示把按鈕添加到容器的North區(qū)域 構(gòu)造方法例

25、子(演示). . . setLayout(new BorderLayout(); Button btnEast=new Button(東); Button btnWest=new Button(西); Button btnNorth=new Button(北); Button btnSouth=new Button(南); Button btnCenter=new Button(中); add(btnEast,BorderLayout.EAST); add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btn

26、South,BorderLayout.SOUTH); add(btnCenter,BorderLayout.CENTER);在使用BorderLayout的時候,如果容器的大小發(fā)生變化,其變化規(guī)律為:組件的相對位置不變,大小發(fā)生變化。例如:容器變高了,則North、South區(qū)域不變,West、Center、East區(qū)域變高;如果容器變寬了,West、East區(qū)域不變,North、Center、South區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域(West、East、North、South區(qū)域)沒有組件,則由Center區(qū)域去補充,但是如果Center區(qū)域沒有組件,則保持空白Borde

27、rLayout內(nèi)的組件變化特性CardLayout布局管理器(P358,演示)卡片布局是把組件安排到不同的卡片容器中,這個卡片容器相互重疊,但一次只能顯示一個組件,因此也稱之為“聯(lián)合布局(Combining layouts)”,該布局管理器會自動改變原有尺寸,充滿整個空間,在添加組件時需要給組件起個名稱,以便與以后直接通過名稱調(diào)用組件。每當(dāng)需要許多面板切換,而每個面板需要顯示為不同布局時,可以使用卡片布局??ㄆ季痔峁┝藘煞N方式顯示組件一種是通過public void show(Container parent,String name);另一種是根據(jù)組件添加的順序直接調(diào)用first(Conta

28、iner parent),next(Container parent),previous(Container parent),last(Container parent)4個方法來顯示組件 BoxLayout是Swing提供的布局管理器,它有兩種排列方式,一種是水平的,另一種是垂直的。我們可以使用BoxLayout提供的兩個常量X_AXIS、Y_AXIS來指明組件在容器中是水平還是垂直排列的。構(gòu)造方法: BoxLayout(Container con, int axis) BoxLayout.X_AXIS或BoxLayout.Y_AXISBoxLayout布局管理器GridBagLayout類

29、與GridBagConstraints類GridBagLayout 是一個靈活的布局管理器,借助于GridBagConstraints類,實現(xiàn)更靈活的外觀管理,提供具有不同大小的行和列來放置組件,每個單元大小可不同。 方法:使用GridBagConstraints對象來確定組件的大小和位置約束,然后將其加入GridBagLayout 對象中button1button2button3button8button5button6button7button4button9 GridBagLayout gbl=new GridBagLayout(); /只有一種無參構(gòu)造方法 panel.setLayou

30、t(gbl); GridBagConstraints q=new GridBagConstraints(); /配置約束對象 q.*=*; gbl.setConstraints(component, q); /將組件component按照約束q設(shè)置 panel.add(component);具體的使用方式(P359)常用的約束條件一fill屬性:當(dāng)組件的顯示區(qū)域大于組件大小時的顯示方式。該屬性必須與weighttx和weighty屬性一起使用默認(rèn)值為GridBagConstraints.NONE,表示組件大小不變 ;GridBagConstraints.HORIZONTAL表示將組件拉寬到與單

31、元格寬度相同;GridBagConstraints.VERTICAL表示將組件的高度提升到與單元格高度一致;GridBagConstraints.BOTH表示將組件的高度和寬度都拉伸到與單元格一致.BoxLayout屬性允許縱向或橫向布置多個組件的布局管理器常用的約束條件二gridwidth,gridheight屬性:指定組件所占的單元格的數(shù)量,默認(rèn)值皆為1. gridwidth表示橫向單元格數(shù)量;gridheight表示縱向單元格數(shù)量.gridx,gridy屬性:指定組件所在單元格的位置. gridx表示列數(shù); gridy表示行數(shù).weightx,weighty屬性:指定當(dāng)圖形窗口擴(kuò)大時,各

32、單元格如何分配被擴(kuò)大的空間.weightx表示橫向擴(kuò)大權(quán)重,weighty表示縱向擴(kuò)大權(quán)重.ipadx,ipady屬性:指定組件內(nèi)部的填充寬度和高度.insets屬性:指定組件和單元格之間的空隙.anchor屬性:指定當(dāng)組件小于單元格時的放置方式.null布局管理器當(dāng)用戶不想使用布局管理器,需要自己設(shè)置組件的位置和大小時,可以把容器的布局設(shè)置為null布局。向空布局的容器添加組建時需要下列兩個步驟:使用add(c)方法向容器中添加組件c;組件調(diào)用setBounds(int x,int y,int width,int height)方法設(shè)置該組件在容器中的位置。需要注意的是,這種方法會導(dǎo)致程序與

33、系統(tǒng)相關(guān),如不同的分辨率會產(chǎn)生不同的效果。小結(jié):布局管理(一)FlowLayout: 組件在一行中從左至右水平排列,排滿后折行,缺省的Panel布局管器BorderLayout:北、南、東、西、中,缺省的窗口容器的管理器CardLayout:每一個組件作為一個卡片,容器僅顯示多個卡片中的某一個GridLayout:以行和列的網(wǎng)格形式安排組件GridBagLayout:使用復(fù)雜、功能靈活小結(jié):布局管理(二)Frame是一個頂級窗口。Frame的缺省布局管理器為BorderLayout。Panel 無法單獨顯示,必須添加到某個容器中。 Panel 的缺省布局管理器為FlowLayout。當(dāng)把Pan

34、el 作為一個組件添加到某個容器中后,該Panel 仍然可以有自己的布局管理器。因此,可以利用Panel 使得BorderLayout 中某個區(qū)域顯示多個組件,達(dá)到設(shè)計復(fù)雜用戶界面的目的 。如果采用無布局管理器 setLayout(null),則必須使用setLocation(),setSize(),setBounds()等方法手工設(shè)置組件的大小和位置,此方法會導(dǎo)致平臺相關(guān),不鼓勵使用。 13.3 處理事件幾個有用的概念事件 描述用戶所執(zhí)行的操作,在java.awt.event包中定義了若干類型的事件(例如點擊鼠標(biāo)、按下鍵盤、關(guān)閉窗口)監(jiān)聽者接口 特定類型的Listener接口,用于監(jiān)聽特定類

35、型的事件監(jiān)聽者類 是實現(xiàn)了某種監(jiān)聽者接口的類,由編程者定義事件監(jiān)聽者 是某個監(jiān)聽者類的對象,由編程者使用new創(chuàng)建AWT事件處理的基本概念和流程事件源用戶在各種場合進(jìn)行的各項操作,如敲擊鍵盤或用鼠標(biāo)點擊某個組件等。事件源指的是產(chǎn)生事件的對象。事件對象對于不同的事件源,Java虛擬機(jī)會產(chǎn)生相應(yīng)類型的事件對象。Java自動識別各種不同的事件對象的類型并進(jìn)行分類處理。事件處理(監(jiān)聽)器接口各種類型的事件均有對應(yīng)的事件處理器接口。該接口封裝了與其對應(yīng)類型事件的各種處理方法,并建立了事件到相應(yīng)處理方法的自動映射。事件處理模型基于授權(quán)事件模型:事件來源對象S因用戶進(jìn)行操作(鼠標(biāo)或鍵盤)系統(tǒng)會自動觸發(fā)此事件

36、類對象E,并通知所授權(quán)的事件監(jiān)聽者L(需事先調(diào)用來源對象的addXxxListener方法向L注冊),事件監(jiān)聽者L中有處理各種事件的方法(事件處理者1n)便會處理此事件E的各種狀況 。SEL編程的基本方法(重點)1. 對java.awt中組件實現(xiàn)事件處理必須使用java.awt.event包,所以在程序開始應(yīng)加入import java.awt.event.*語句。2. 定義事件監(jiān)聽者類,有兩種方法(): 2.1.實現(xiàn)事件所對應(yīng)的接口XXListener,并重寫接口中的全部方法(即使不需要的方法也必須定義,可定義為空方法)。 2.2. 繼承事件對應(yīng)的抽象適配器(adapter)類,重寫該類中所需

37、的方法3. 創(chuàng)建事件監(jiān)聽者對象4. 為將會觸發(fā)事件的組件C注冊相應(yīng)的事件監(jiān)聽者對象: 事件源.addXXListener(XXListener代表某種事件監(jiān)聽者)。實際上addXXListener中的參數(shù)是一個事件監(jiān)聽器對象。5. 要刪除事件監(jiān)聽者可以使用語句:事件源.removeXXListener;public class ButtonAct extends Frame . . . public ButtonAct() . . . /為b1注冊事件監(jiān)聽者B1b1.addActionListener(new B1();add(b1);. . . /利用inner class結(jié)構(gòu)定義監(jiān)聽者類 class B1 implements ActionListener /利用actionPerformed方法進(jìn)行事件處理public void actionPerformed(ActionEvent e)who.setText(But

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論