SUN_JAVA_培训专用教材c11-15.docx

上传人:无*** 文档编号:68364977 上传时间:2022-12-27 格式:DOCX 页数:98 大小:408.48KB
返回 下载 相关 举报
SUN_JAVA_培训专用教材c11-15.docx_第1页
第1页 / 共98页
SUN_JAVA_培训专用教材c11-15.docx_第2页
第2页 / 共98页
点击查看更多>>
资源描述

《SUN_JAVA_培训专用教材c11-15.docx》由会员分享,可在线阅读,更多相关《SUN_JAVA_培训专用教材c11-15.docx(98页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java基础类JDK1.2提供了 Java基础类,其中的一部分就是Swing。Swing是构筑在AWT上层的一些组件的集 合(为了保证平台独立性,它是用100%的纯Java编写)。本模块介绍了 JFC和Swing图形用户界面的实 现。The Java Ptognnnming Language BasicsGtt飞立UtfiB 3 阳d3d”Tons.M IObject-Oriented Piograrrming6声Lvi 駐 FentuttfException Handling De.“reThtAWT EVtfitNMd,OeAWT litcwyApplets DtBoOjdSm mAp 口

2、出MultithreadingCo mmunicatio nsvrf nJ !即叫Y第一节相关问题讨论以下为与本模块内容有关的问题: AWT本身是非常有用的,它是个新的类集合的一部分。这个新的类集合称为Java基础类 (JFC),它作为个整体,将GUI提升到了一个新的水平层次。JFC究竟是什么,特别地,什 么是Swing?什么事Swing可以做但AWT不能?第二节目标在完成了本模块的学习后,你应当能够:认识Java基础类的关键特性 描述com.sun.java.swing包的关键特性 认识Swing组件 定义容器和组件,并解释如何联合使用它们来构造个Swing GUI 编写,编译并运行一个基本

3、的Swing应用程序 高效地使用诸如Jframe和Japplet等顶层容器参考文献以下参考文献可提供有关本模块论题的其他细节内容: The Java Tutorial ,这是 Sun Microsystems 的一本在线教材,可以从 httD: 得到 第三节介绍介绍 Java基础类包含5个API AWT Java2D Accessibility Drag & Drop SwingJava基础类是关于GU!组件和服务的完整集合,它大大简化了健壮Java应用程序的开发和实现。JFC,作为 JDK1.2 的个有机部分,主要包含 5 个 API: AWT, Java2D, Accessibility,

4、 Drag & Drop, Swing。它提供了帮助开发人员设计复杂应用程序的一整套应用程序开发包。正如前面那些模块中所讨论的那样,AWT组件为各类Java应用程序提供了多种GUI工具。Java2D是图形API,它为Java应用程序提供了一套高级的有关二维(2D)图形图像处理的类。Java2D API扩展了 java.awt和java.awt. image类,并提供了卡富的绘图风格,定义复杂图形的机制和精 心调节绘制过程的方法和类。这些API使得独立于平台的图形应用程序的开发更加简便。Accessibility API提供了一套高级工具,用以辅助开发使用非传统输入和输出的应用程序。它提供了个辅

5、助的技术接口,如:屏幕阅读器,屏幕放大器,听觉文本阅读器(语音处理)等等。Drag & Drop技术提供了 Java和本地应用程序之间的互操作性,用来在Java应用程序和不支持Java 技术的应用程序之间交换数据。JFC模块的重点在Swing。Swing用来进行基于窗口的应用程序开发,它提供了一套丰富的组件和 作框架,以指定GUI如何独立于平台地展现其视觉效果。Swing介绍可插的外观和感觉应用程序看上去是与平台有关的有客户化的Swing组件 Swing的体系结构它是围绕着实现AWT各个部分的API构筑的大多数组件不象AWT那样使用与平台相关的 实现Swing提供了一整套GUI组件,为了保证可

6、移植性,它是完全用Java语言编写的。可插的外观和感觉可插的外观和感觉使得开发人员可以构建这样的应用程序:它们可以在任何平台上执行,而且看上 去就象是专门为那个特定的平台而开发的。个在Windows环境中执行的程序,似乎是专为这个环境而 开发的;而同样的程序在Unix平台上执行,它的行为又似乎是专为Unix环境开发的。开发人员可以创建自己的客户化Swing组件,带有他们想设计出的任何外观和感觉。这增加了用于 跨平台应用程序和Applet的可靠性和 致性。个完整应用程序的GUI可以在运行时刻从一种外观和 感觉切换到另种。Swing的体系结构与AWT比较,Swing提供了更完整的组件,引入了许多新

7、的特性和能力。Swing API是围绕着实现 AWT各个部分的API构筑的。这保证了所有早期的AWT组件仍然可以使用。AWT采用了与特定平台 相关的实现,而绝大多数Swing组件却不是这样做的,因此Swing的外观和感觉是可客户化和可插的。Your Application上图显示了 JFC 各个部分之间的相互关系。Java2D, Accessibility, Drag & Drop和 Accessibility API 是AWT和JFC的一部分,但它们不属于Swing。这是因为,这些组件使用了一些本地代码,而Swing 却不是这样的。Swing是围绕着个称为JComponent的新组件构建的,

8、而JComponent则由AWT的容器类扩展而 来。Swing的层次结构下图说明了 Swing组件的层次结构:j ava. awt. Containercom.sun.java, swing.JComponentJPasswordFieldJTextComponentAbstractButtonJTextAreaJTextField - iHtmlEditorKitJPanel JComboBox JLabel JLayeredPane JList JToolBar JMenuBar JPopupMenu JPane JScrollBar JScrollPane JSlider JTable

9、JSeparator JTree JProgressBar JRootPane JSplitPane JTabbedPaneJToggleButton JButton JMenuItemJCheckBox JRadioButtonJRadioButtonMenuItem JCheckBoxMenuItem JMenuSwing GUI使用两种类型的类,即GUI类和非GUI支持类。GUI类是可视的,它从JComponent继 承而来,因此称为“J”类。非GUI类为GUI类提供服务,并执行关键功能;因此它们不产生任何可视的输出。注一Swing的事件处理类是非GUI类的一例.Swing组件Swing

10、组件主要为文本处理、按钮、标签、列表、pane、组合框、滚动条、滚动pane、菜単、表格 和树提供了组件。其中一些组件如下所示:Swing!J Applet MondayJButtonMondaySelect on OptionTicoda Wsdnesdey Thursday FrdayJComboBoxIs 3WINO cool?I : Yge:j| _Cancel |JOptionPaneJanuary February四MarchAprilJListJ LabelSwing组件(续)JScrollPaneFirst Na.Last NameIvarkAndrewsTomBanAlarC

11、hi ngJ9ffCinkinsJTableJTooltipJSliderR tabs3.gif Tree View 曰 drawingPl treeviewJTree第四节基本的Swing应用程序HelloSwing应用程序的输出产生下图所示的窗口:HelloSwinglam a Swing button!Number of b utton clicks: 4每次用户点击按钮时,标签就会更新。11.5.1 HelloSwing1. import java.awt.*;1.1 mport java.awt.event.*;1.2 mport com.sun.java.swing.*;1.3 m

12、port java.awt.accessibility.*;5 .6 .public class HelloSwing implements ActionListener 7 .private JFrame jFrame;8 .private JLabel jLabel;9 .private JPanel jPanel;10 .private JButton jButton;11 .private AccessibleContext accContext;12 .13 .private String labelPrefix =14 .Number of button clicks:15 .pr

13、ivate int numClicks = 0;16 .17 .public void go() 18 .19 ./ Here is how you can set up a particular20 ./ lookAndFeel. Not necessary for default.21 ./22 ./ try 23 ./ UIManager.setLookAndFeel(24 ./ UIManager.getLookAndFeel();25 ./ catch (UnsupportedLookAndFeelException e) 26 ./ System.err.println(Could

14、nt use the +27 ./ default look and feel + e);28 ./ 29 .30 .jFrame = new JFrame(HelloSwing);31 .jLabel = new JLabel(labelPrefix + 0);32 .33 .jButton = new JButton(I am a Swing button!);34 .35 ./ Create a shortcut: make ALPA be equivalent36 ./ to pressing mouse over button.37.jButton.setMnemonic(,i,);

15、38.39.jButton.addActionListener(this);40.HelloSwing (续)1 ./ Add support for accessibility.2 .accContext = jButton.getAccessibleContext();3 .accContext.setAccessibleDescription(4 .Pressing this button increments +5 .the number of button clicks);6 .7 ./ Set up pane.8 ./ Give it a border around the edg

16、es.9 .j Panel = new JPanel();10 .jPaneI.setBorder(11 .BorderFactory.createEmptyBorder(12.30,30,10,30);13 .14 ./Arrange for compts to be in a single column.15 .jPanel.setLayout(new GridLayout(0, 1);16 .17 ./ Put compts in pane, not in J Frame directly.18 .jPanel.add(jButton);19 .j Panel.add(j Label);

17、20.jFrame.setContentPane(jPanel);21 .22 ./ Set up a WindowListener inner class to handle23 ./ windows quit button.24 .WindowListener wl = new WindowAdapter() 25.public void windowClosing(WindowEvent e) 26.System.exit(0);27.)28.;29.jFrame.addWindowListener(wl);30.31.jFrame.pack();32.jFrame.setVisible

18、(true);33 .)34 .HelioSwing (续)1 ./ Button handling.2 .public void actionPerformed(ActionEvent e) 3.numClicks+;4 .jLabel.setText(labelPrefix + numClicks);5 .)6 .7 .public static void main(StringJ args) 8 .9 .HelloSwing helloSwing = new HelloSwingO;10 .helloSwing.go();11 .12 .11.4.2 导入 Swing 包导入Swing包

19、选择外观和感觉 getLookAndFeel()设置窗口容器 JFrame 与 Frame 相似 你不能直接将组件加入到JFrame中 个content pane包含了除菜单条外所有Frame的可视组件语句行import com.sun.java.swing.装入整个Swing包,它包括了标准Swing组件和功能。选择外观和感觉Hello Swing的第22 28行给定了应用程序外观和感觉的格式。getLookAndFeel。方法返回在 Windows环境中的外观和感觉。在运行Solaris操作系统的机器上,这个方法则返回一个公共桌面环境 (CDE) /Motif的外观和感觉。因为都是缺省值,

20、所以对本例来说,这些行都不是必需的。H.4.3建立窗Swing程序用JFrame对象实现了它们的窗口。JFrame类是AWT Frame类的,个子类。它还加入了 些Swing所独有的特性。Hello Swing中,处理JFrame的代码如下:public HelloSwingO JFrame j Frame;JPanel jPanel;jFrame = new JFrame(,HelloSwingM);jPanel = new JPanel();jFrame.setContentPane(jPanel);这段代码与使用Frame的代码十分相似。唯一的区别在于,你不能将组件加入到JFrame中。

21、你可 以或者将组件加入到JFrame的content pane中,或者提供个新的content pane个content pane是个包含除菜单条(如果有的话)外所有框架的可视组件的容器。要获得一个 JFrame (Kj content pane,可.使用getContentPane()方法。要设置它的content pane (如前面本例所示),则 可使用 set ContentPane。方法。11.4.4 建立Swing组件Swing应用程序基础 建立Swing组件 Hello Swing.java示例实例化了 4个Swing组件,这4 个组件是:JFrame, J Button, J L

22、abel 和 JPanel 支持辅助技术 Hello Swing.java示例代码支持辅助技术accContext = jButton.getAccessibleContext();accContext.setAccessibleDescription(Pressing this button increments +the number of button clicks.1);Hello Swing 程序显式地实例化了 4 个组件:JFrame, JButton, JLabel 和 JPanel。Hello Swing 用第 33-45行中的代码来初始化JButton。第33行创建了按钮。第

23、37行将ACT-I键组合设置为快捷键,用来模拟按钮的点击。第39行为点 击注册了一个事件处理器。第41 -45行描述了一个按钮,使得辅助技术可以提供有关按钮功能的信息。第4959行初始化了 JPanel。这些代码创建了 JPanel对象,设置它的边框,并将它的布局管理器设 置为单列地放置panel的内容。最后,将一个按钮和一个标签加入到Panel中。Hello Swing中的Panel 使用了一个不可见的边框,用来在它周围放入额外的填充。11.4.5支持辅助技术Hello Swing.java中唯一支持辅助技术的代码是:accContext = jButton.getAccessibleCon

24、text();accContext.setAccessibleDescription(Pressing this button increments +“the number of button clicks.*);下列信息集也可由辅助技术使用:jButton = new JButton(Im a Swing button!);jLabel = new JLabel(labelPrefix + 0); jLabel.setText(labelPrefix + numClicks);在JFrame, J Button, JLabel和其他所有组件中,都有内建的Accessibihty支持。辅助技

25、术可以很容 易地获得文本,甚至与一组件某特定部分相关的文本。第五节 构造个Swing GUI构造个Swing GUI 顶层容器(JFrame, J Applet, JDialog,和 JWindow) 轻质组件(如 JButton, JPanel 和 JMenu) 将Swing组件加入到与顶层容器相关联的content pane中。Swing包定义了两种类型的组件: 顶层容器(JFrame, J Applet, JWindow,和 JDialog) 轻质组件(其他的J,如JButton, JPanel和JMenu)顶层容器定义了可以包含轻质组件的框架。特别地,个顶层Swing容器提供了个区域,

26、轻质组 件可在这个区域中绘制自身。顶层容器是它们对应的重质AWT组件的Swing子类。这些Swing容器依 靠它们的AWT超类的本地方法与硬件进行适当的交互。通常,每个Swing组件在其容器层次结构中都应当有一个位于组件上面的顶层Swing容器。例如, 每个包含Swing组件的Applet都应作为J Applet (而它自身乂是java.applet.Applet的个子类)的子类来 实现。相似地,每个包含Swing组件的主窗口都应用JFrame来实现。典型地,如果你在使用Swing组 件,你将只能使用Swing组件和Swing容器。Swing组件可以加入到个与顶层容器关联的content pa

27、ne中,但绝不能直接加入到顶层容器中。 content pane是个轻质Swing组件,如JPanel下面是个典型Swing程序的GUI容器层次结构图,这个程序实现了个包含2个按钮,个文本域和个列表:Jframe ( a top-level Swing container)content paneJButton JButton JPanel+一JTextField JList下面是关于同样的GUI的另个容器层次结构,只是在这里,GUI是在浏览器中运行的个Applet。JApplet ( a top-level Swing container)content paneJButton JButto

28、n JPanelJTextField JList下面是构造如上图所示的GU!层次结构的代码:1 .import com.sun.java.swing.*;1.1 mport java.awt.*;3 .4 .public class SwingGUI 5 .6 .JFrame topLevel;7 .JPanel jPanel;8 .JTextFieldjTextField;9 .JListjList;10 .11 .JButton bl;12 .JButton b2;13 .Container contentPane;14 .15 .Object listData = 16 .new Str

29、ing(First selection),17 .new String(Second selection),18 .new String(Third selection)19 .);20 .21 .public static void main (String args) 22 .SwingGUI swingGUI = new SwingGUI();23 .swingGUI.go();24 .25 .26 .public void go() 27 .topLevel = new JFrame(uSwing GUI);28 .29 ./ Set up the JPanel, which cont

30、ains the text field30 ./ and list.31 .jPanel = new JPanel();32 .jTextField = new JTextField(20);33 .jList = new JList(listData);34 .35 .contentPane = topLevel.getContentPane();36 .contentPane.setLayout(new BorderLayoutO);37 .38 .bl = new JButton(l);39 .b2 = new JButton(2);40 .contentPane.add(b 1, Bo

31、rderLayout.NORTH);41 .contentPane.add(b2, BorderLayout.SOUTH);42 .43 .jPanel.setLayout(new FlowLayoutO);44 .jPanel.add(jTextField);45 .jPanel.add(jList);46 .contentPane.add(jPanel, BorderLayout.CENTER);47 .48 .topLevel.pack();49 .topLevel.set Visible(true);50 .)51 .第六节 JComponent类JComponent 类Swing组件

32、是JComponent的子类边框双缓冲提示框键盘导航应用程序范围的可插式外观和感觉所有Swing都作为JComponent的子类来实现,而JComponent类乂是从Container类继承而来。Swing 组件从JComponent继承了如下功能:边框你可以用setBorder()方法来指定在组件周围显示的边框。还可用个EmptyBorder的实例来指 定一个组件在其周围留有一定的额外空间。 双缓冲双缓冲可以改善一个频繁被改变的组件的外观。现在你不需要编写双缓冲代码Swing已为 你提供了。缺省情况下,Swing组件是双缓冲的。 提示框通过用setToolTipText。方法来指定一个字符串

33、,你可以提供给用户有关某个组件的帮助信息。 当光标暂停在组件上时,所指定的字符串就会在组件附近的一个小窗口中显示出来。 键盘导航使用registerKeyboardAction()方法,你可以让用户以键盘代替鼠标来操作GUI。用户为启动一 个动作所必须按下的修饰键与字符的组合,由一个Keystroke对象来表示。 应用程序范围的可插式外观和感觉每个Java应用程序在运行时刻有个GUIManager对象,它用于确定运行时刻Swing组件的外 观和感觉。由于安全性的限制,你可以通过调用UIManager.setLookAndFeel()方法选择所有Swing 组件的外观和感觉。在你所呑见的东西背后

34、,每个JComponent対象都有个对应的ComponentGUI 对象,它用来执行所有关于该JComponent的绘制、事件处理、大小判定等任务。练习:熟悉Swing练习目标在本实验中,你将编写、编译和执行两个在GUI中使用Swing组件的程序。、准备为了更好地完成这个练习,你必须理解Swing组件和AWT组件的关系。二、任务水平1:创建一个基本的Swing应用程序1 .使用文本编辑器,创建一个与前面所讨论的HelloSwing类似的应用程序。2 .将一个图标与按钮相关联。(提示你可能需要使用Imageicon类。)3 .将一个提示框与按钮相关联,这样当鼠标移动到按钮之上时,会显示个“ JF

35、C Button”的 提示框。水平2I用Swing组件创建一个文本编辑器1 .创建个初始的 JFrame,它包含个 JToolBar, Text Area JLabel。2 .将一个JMenuBar与J Frame关联起来。3 .创建JMenuBar上的第个菜单。创建一个标记为JMenu,其JMenuItems包括New, Open, Save 和 Close 4 .为每个条目增加一个加速键。使用标签的第一个字母。5 .为每个JMenuItem创建一个匿名的ActionListener,用来处理事件并调用与每个事件对应的 方法。6 .将带有About JMenuItem的HelpJMenu加入

36、到JMenuBar。分别为H和A增加快捷键。7 .在与About JMenuItem相关联的事件处理器中创建个模式对话框。8 .在工具条上创建4个JButton,标为New, Open, Save和About。9 .为工具条上的每个按钮增加个带有适当消息的提示框。此外,创建个匿名ActionListener 来处理适当的事件。10 .保存并编译程序。三、练习小结讨论一花几分钟时间讨论下,在本实验练习过程中你都经历、提出和发现了什么。 经验 解释 总结 应用四、检查你的进度在进入下一个模块的学习之前,请确认你能够: 认识Java基础类的关键特性 描述com.sun.java.swing包的关键特

37、性 认识Swing组件 定义容器和组件,并解释如何联合使用它们来构造个Swing GUI 编写,编译并运行一个基本的Swing应用程序 高效地使用诸如JFrame和JApplet等顶层容器五、思考题你现在已经知道了如何编写GU!应用程序。假设你想在个Web浏览器中运行个GU!应用程序, 如何做到这点?第11章Jvav小程序介绍本模块讨论了 JDK对Applet的支持,以及Applet在编程方式、操作上下文和如何开始等方面与应 用程序的区别。The Java Prog 冷 mm in q Language Basics Ki*a4w wi4 T2ZxptiiiOft$nd HowCocbodOb

38、ject-Oriented ProgrammingOttersLw 图号e FeitusfException HandlingDeveloping Gwphical User Interfaces|. 一 | TheAWTFAWT i|r6th!”716tli- II ci二 AppletslitDOductZnMultithreadingCommunicationsStam VO vtd Ede5Ztwodc%第一节相关问题讨论一以下为与本模块内容有关的问题: Applet有那些优点?第二节目标在完成了本模块的学习后,你应当能够: 区分独立应用程序和Applet 编写个HTML标记来调用Ja

39、va Applet 描述Applet和AWT的类层次 仓建 Hello World. Java Applet 列出Applet的主要方法 描述和使用AWT的绘图模型 使用Applet方法从URL读取图像和文件 使用param/jUii配置 Applet第三节什么是Applet?什么是Applet?能嵌入到个HTML页面中且可通过Web浏览器下载 和执行的种Java类可以以下方式装载: 浏览器装载URL 浏览器装载HTML文档 浏览器装载Applet类 浏览器运行AppletApplet是能够嵌入到个HTML页面中,且可通过Web浏览器下载和执行的种Java类。它是Java 技术容器(conta

40、iner)的种特定类型,其执行方式不同于应用程序。个应用程序是从它的main。方法被 调用开始的,而个Applet的生命周期在一定程度上则要复杂得多。本模块分析了 Applet如何运行,如 何被装载到浏览器屮,以及它是如何编写的。12.3.1 装入 Applet由于Applet在Web浏览器环境中运行,所以它并不直接由键入的个命令启动。你必须要创建 个HTML文件来告诉浏览器需装载什么以及如何运行它。1 .浏览器装入URL2 .浏览器装入HTML文档3 .浏览器装入Applet类4 .浏览器运行Applet12.3.2 Applet的安全限制Applet的安全限制多数浏览器禁止以下操作: 运行

41、时执行另程序 任何文件的输入/输出 调用任何本地方法 尝试打开除提供Applet的主机之外的任何系统的Socket由于通过网络装载,Applet的代码具有一种内在的危险性。如果有人编写了一个恶意的类来读取你 的密码文件,并把它通过Internet传送,会产生怎样的后果呢?所能够控制的安全程度是在浏览器层次上实现的。大多数浏览器(包括Netscape Nevigator)缺省地 禁止以下操作: 运行时执行另程序 任何文件的输入/输出 调用任何本地方法尝试打开除提供Applet的主机之外的任何系统的Socket这些限制的关键在于,通过限制Applet对系统文件的存取来阻止它侵犯个远程系统的隐私或破

42、坏 该系统。禁止执行另程序和不允许调用本地方法限制了 Applet启动未经JVM检查的代码。对Socket 的限制则禁止了与另一个可能有危害性的程序的通信。JDK1.2提供了一种方式,它指定了 一个特殊的“保护域”或个特殊Applet运行的安全性环境。 远程系统检查原始的URL以及它下载的Applet的签名,和一个含有从特殊的Applet到特殊保护域的映 射入口的本地文件进行比较。因此,来自特别位置的特殊Applet具有一些运行特权。第四节编写个Applet要编写个Applet必须首先用以下方式创建一个类:import java.applet.*;public class HelloWorld

43、 extends Applet Applet的类必须为public ,且它的名称必须与它所在的文件名匹配;在这里,就是HelloWorld.javao 而且,该类必须为 java.applet.Applet 的子类。Applet类的层次Java.applet.Applet类实际上是java.awt.Panel的子类。Applet和AWT类的层次如下:java. lar.Cbj ectjava.awt. Cbnponentj ava . awt. Containerjava, awt .Windowjava, awt .Paneljava, awt .Framej ava. applet. Ap

44、plet这种层次关系显示,个Applet可直接用作一个AWT布局的起始点。因为Applet为一 Panel,所 以它有,个缺省的流(flow)布局管理器。Component, Container和Pane!类的方法被Applet类继承了下来。12.4.1 主要的Applet方法主要的Applet方法init()start。stop()destroy。paint。在个应用程序中,程序由main。方法处进入,而在个Applet中却不是这样。在构造函数完成了 它的任务后,浏览器调用init()对Applet进行基本的初始化操作。init()结束后,浏览器调用另个称为 start。的方法。本模块稍后将

45、对start。做更细致的剖析;start。通常在Applet成为可见时被调用。方法init。和start。都是在Applet成为“活动的”之前运行完成的,正因为这样,它们都不能用来编 写Applet中继续下去的动作。实际上,与一个简单应用程序中的方法main。不同的是,没有什么方法的 执行是贯穿于Applet的整个生命过程中的。你在后面将看到如何使用线程来实现这特色。此外,你在 编写Applet子类时可用的方法还有:stop。,destroy。和paint。12.4.2 Applet 显示Applet显示 Applet在本质上是图形方式的方法paint。由浏览器环境调用Applet木质上是图形方式的,所以尽

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁