java圖形用戶界面_java教程_第1頁
已閱讀1頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章 圖形用戶界面,5.1 文本框和文本區(qū)5.2 標(biāo) 簽5.3 按 鈕5.4 選 擇 框5.5 畫 布5.6 面板與布局設(shè)計5.7 窗 口5.8 菜 單5.9 對 話 框,5.1 文本框和文本區(qū),5.1.1 文本框及處理事件1.文本框的創(chuàng)建2.文本框處理事件例5-2:兩個空白文本框,當(dāng)在第一個文本框內(nèi)輸入字符時,在文本框內(nèi)顯示“*”號,輸入完畢按回車

2、鍵后,在第二個文本框內(nèi)顯示:The end。,import java.awt.*;import java.applet.Applet;import java.awt.event.*;public class Ex6_2 extends Applet{ TextField tf1=new TextField(20); TextField tf2=new TextField(20);,public void init

3、(){ add(tf1); tf1.setEchoChar('*'); add(tf2); tf1Listener al = new tf1Listener(); tf1.addActionListener(a1); }class tf1Listener implements ActionListener{,public void

4、 actionPerformed(ActionEvent e) { tf2.setText("The end"); } }}運(yùn)行結(jié)果見圖5-2。,圖5-1,5.1.2 文本區(qū)及處理事件例5-4:在Applet中添加一個文本框和一個文本區(qū),每當(dāng)在文本框中輸入一個字符時,在文本區(qū)內(nèi)就附加一行文本:The text is changed。import java.aw

5、t.*;import java.applet.Applet;import java.awt.event.*;,public class Ex6_4 extends Applet{ TextField tf1=new TextField(20); TextArea ta1=new TextArea (null,6,40); public void init(){ add(tf1);

6、 add(ta1); tf1.addTextListener(new TextL()); } class TextL implements TextListener{,public void textValueChanged(TextEvent e) { ta1.append("\nThe text is changed"); }

7、 }}運(yùn)行結(jié)果見圖5-4。,圖5-4,5.2 標(biāo) 簽,標(biāo)簽(Label)是AWT構(gòu)件中最簡單的一種構(gòu)件,所謂標(biāo)簽實(shí)質(zhì)上就是一段文字,但它與文字不同的是它是一個對象,所以在每次repaint時,不用重新添加。標(biāo)簽在GUI界面中通常作為提示信息使用。,標(biāo)簽構(gòu)件的構(gòu)造方法如下。(1)Label() 構(gòu)造一個空的標(biāo)簽。(2)Label(String str) 構(gòu)造一個以String str為內(nèi)容的標(biāo)簽。(3)Label

8、(String str,int align) 定義一個以String str為內(nèi)容的標(biāo)簽。,5.3 按 鈕,5.3.1 按鈕按鈕(Button)是GUI用戶界面中常用的元素,它是用戶輸入命令的一個重要工具。當(dāng)用鼠標(biāo)單擊某個按鈕該按鈕獲得焦點(diǎn)時,在鍵盤上按回車鍵都會導(dǎo)致一個命令的執(zhí)行。Button類有兩種構(gòu)造方法。(1)Button() 構(gòu)造一個沒有標(biāo)簽的按鈕。(2)Button(String str) 構(gòu)造一

9、個以String str為標(biāo)簽的按鈕。,5.3.2 按鈕處理事件與按鈕有關(guān)的事件有兩類。1.ActionEvent當(dāng)用鼠標(biāo)單擊按鈕,或當(dāng)按鈕獲得焦點(diǎn)時在鍵盤上按回車鍵都導(dǎo)致該事件的發(fā)生,此時任何實(shí)現(xiàn)了被注冊為監(jiān)聽者的ActionListener接口的類,它的actionPerformed()方法將被調(diào)用。,下面的程序范例在Applet上添加兩個命令按鈕,其標(biāo)簽分別為“顯示”和“清除”,當(dāng)單擊“顯示”按鈕時,在文本區(qū)中顯示:“

10、你按下了顯示按鈕”,當(dāng)按“清除”按鈕時則清除文本區(qū)中顯示的字符。例5-6:文本區(qū)事件處理。import java.awt.*;import java.applet.Applet;import java.awt.event.*;,public class Ex6_6 extends Applet{ Button b1=new Button("顯示"); Button b2=new Button

11、("清除"); TextArea ta1=new TextArea (null,6,40); public void init(){ add(b1); add(b2); add(ta1); b1.addActionListener(new ButtenL()); b2.addActionListener(new But

12、tenL()); },class ButtenL implements ActionListener{ public void actionPerformed(ActionEvent e) { if (e.getSource()==b1) ta1.append ("\n你按下了"顯示"按鈕");,else

13、 ta1.append ("\n你按下了"清除"按鈕"); } }}運(yùn)行結(jié)果見圖5-6。,圖5-6,2.FocusEventFocusEvent稱作焦點(diǎn)事件,它的發(fā)生是指鍵盤光標(biāo)移動到構(gòu)件上并且可以接受鍵盤的輸入。如果光標(biāo)移動到一個按鈕上,稱作該按鈕獲得焦點(diǎn),反之稱作失去焦點(diǎn)。當(dāng)一個按鈕獲得焦點(diǎn)時單擊回車鍵即相當(dāng)于用鼠標(biāo)單擊該按鈕。如果一個文本框

14、獲得焦點(diǎn)就可以在該文本框中輸入字符。,例5-7:按鈕和文本框檢測焦點(diǎn)事件的例子。程序如下:import java.awt.*;import java.applet.Applet;import java.awt.event.*;,public class Ex6_7 extends Applet{ TextField txt1 = new TextField("txt1",50); TextFie

15、ld txt2 = new TextField("txt2",50); Button button1=new Button("button1"); Button button2=new Button("button2"); class Keytry implements FocusListener{,public void focusGained(Foc

16、usEvent e) { txt1.setText("txt1:paramString()="+e.paramString()); if (e.getSource()==txt1) txt2.setText("txt2:focus is on txt1 "); else

17、 txt2.setText("txt2:focus is on button1"); },public void focusLost(FocusEvent e) { txt1.setText("txt1:paramString()="+e.paramString()); txt2.setText("txt2:focu

18、s lost outside button1 or txt1"); } } Keytry al = new Keytry();,public void init(){ setLayout(new FlowLayout()); txt1.addFocusListener(al); button1.addFocusListener(al);

19、 add(button1); add(button2); add(txt1); add(txt2); }},運(yùn)行結(jié)果見圖5-7。,圖5-7,在上面的例子中,只有button1和txt1注冊了焦點(diǎn)事件的事件監(jiān)聽者,它們共享同一個事件處理程序。如果焦點(diǎn)在button1或txt1上面,文本框txt2顯示焦點(diǎn)在哪個構(gòu)件上(focusGaned),反之則指出無焦點(diǎn)(focusLost)

20、。文本框txt1內(nèi)顯示事件的參數(shù)字符串,它也能指出是否有焦點(diǎn)。另外,程序中的setLayout(new FlowLayout())語句是控制構(gòu)件的布局用的,關(guān)于這個問題將在后面的章節(jié)中進(jìn)行討論。,5.4 選 擇 框,5.4.1 選擇框1.下拉列表框(Choice)2.列表框(List)3.復(fù)選框(Checkbox)4.單選框(Checkbox group-Radio Button),5.4.2 選擇框處理事件例5

21、-12:選擇框檢測ItemEvent事件的例子。import java.awt.*;import java.applet.Applet;import java.awt.event.*;,public class Ex6_12 extends Applet implements ItemListener{ TextArea ta1=new TextArea (null,6,40); String subjec

22、t[]={"語文","數(shù)學(xué)","政治","外語","物理","化學(xué)"}; Checkbox cb[]=new Checkbox[6]; public void init(){ add(new Label("請選擇:"));,for(int I=0;I<6;I++

23、){ cb[I]= new Checkbox(subject[I]); add(cb[I]); cb[I].addItemListener(this); } add(ta1); },public void itemStateChanged(ItemEvent e) { ta1.append("\n你在

24、復(fù)選框中的選擇是:"+e.getItem()); }}運(yùn)行結(jié)果見圖5-12。,圖5-12,5.5 畫 布,例5-13:創(chuàng)建一個畫布。import java.awt.*;import java.applet.Applet; import java.util.*; public class mycanvas extends Applet {,public void init() {

25、 MyCanvas1 mc = new MyCanvas1(); mc.setBackground(Color.green); mc.setSize(150,150); add(mc); }},class MyCanvas1 extends Canvas{ public void paint(Graphics g){ g.fillOval(40,20,8

26、0,80); }}運(yùn)行結(jié)果見圖5-13。,圖5-13,5.6 面板與布局設(shè)計,5.6.1 布局管理器1.FlowLayout類2.BorderLayout類例5-15:邊界布局使用實(shí)例。import java.awt.*;import java.applet.Applet;,public class Ex6_15 extends Applet { public void init(){

27、 setLayout(new BorderLayout(0,0)); add(new Button("North"),BorderLayout.NORTH); add(new Button("South"),BorderLayout.SOUTH); add(new,Button("East"),BorderLayout.E

28、AST); add(new Button("West"),BorderLayout.WEST); add(new Button("Center"),BorderLayout.CENTER); }}運(yùn)行結(jié)果見圖5-15。,圖5-15,3.GridLayout類4.布局設(shè)計中的絕對定位,5.6.2 面板面板(Panel)是一個容器類,它可以包含其他

29、的構(gòu)件或另外的面板,并且可以使用布局管理器對其內(nèi)部的構(gòu)件進(jìn)行管理。其實(shí)Aapplet本身就是面板的一個子類,它就是一個特殊的面板。面板缺省的布局方式是FlowLayout。,面板的構(gòu)造方法如下。(1)Panel() 用缺省布局方式(FlowLayout)創(chuàng)建一個面板。(2)Panel(LayoutManager layout) 用指定布局方式創(chuàng)建一個面板。,面板的常用方法如下。(1)public void add(Compon

30、ent comp) 為容器添加一個構(gòu)件。(2)public void remove(Component comp) 為容器去除一個構(gòu)件。(3)public void setSize(int width,int height) 為容器設(shè)定寬和高。(4)public void setFont(Font f) 為容器設(shè)定字體。,(5)public void setLocation(int x,int y) 設(shè)定定坐標(biāo)位置。(

31、6)public void paint(Graphics g) 畫出容器。(7)public void update(Graphics g) 先清除容器的內(nèi)容再調(diào)用paint方法重畫容器。(8)public void repaint() 調(diào)用容器的updata方法。,使用面板可以使構(gòu)件的排列具有更大的靈活性??梢詫⒉煌臉?gòu)件分組,然后將同一組的構(gòu)件放在一個面板上。下面是使用面板安排構(gòu)件的一個例子。例5-18:面板的使用i

32、mport java.awt.*;import java.applet.Applet;,public class Ex6_18 extends Applet { public void init() { setLayout(new FlowLayout(FlowLayout.LEFT)); Panel p1 = new Panel(); add(p1); p1.a

33、dd(new Label("Your name: ")); p1.add(new TextField(30));,Panel p2 = new Panel(); add(p2); p2.add(new Label("Sex: ")); CheckboxGroup cbg = new CheckboxGroup(); p

34、2.add(new Checkbox("Male ", cbg, true)); p2.add(new Checkbox("Female ", cbg, false));,Panel p3 = new Panel(); add(p3); p3.add(new Label("What are you like: "));

35、 p3.add(new Checkbox("Apple ")); p3.add(new Checkbox("orange ")); p3.add(new Checkbox("Strawberry ")); p3.add(new Checkbox("Peach "));,Panel p4 = new Pane

36、l(); add(p4); p4.add(new Label("How much do you eat them per week: ")); Choice c = new Choice(); c.addItem("less than 1kg "); c.addItem("1kg to 3kg");

37、 c.addItem("more than 3kg"); p4.add(c);,Panel p5 = new Panel(); add(p5); p5-add(new Label("What's your opnion of eating fruit: ")); add(new TextArea("I

38、 think ",3,60));,Panel p6 = new Panel(); add(p6); p5-add(new Button(" OK ")); p5-add(new Button("Clear ")); }}運(yùn)行結(jié)果見圖5-18。,圖5-18,在這個程序中,加入了若干個Panel類,在屏幕上顯示在同一行中的構(gòu)件

39、都屬于同一個Panel。布局管理器的缺省設(shè)置是FlowLayout,排列方式缺省為居中。現(xiàn)在版面仍是FlowLayout,排列方式改成靠左。在各個Panel中,使用相同的版面。當(dāng)然也可將各個Panel設(shè)置成不同的版面,這樣效果會不同。,5.7 窗 口,窗口是一個最重要的容器類構(gòu)件,在獨(dú)立的Java應(yīng)用程序中,所有的用戶界面構(gòu)件都是添加在窗口當(dāng)中的。在Java的AWT工具包中有一個窗口(Window)類,但它生成的窗口沒有標(biāo)題欄和

40、改變窗口大小的按鈕,在實(shí)際的應(yīng)用中經(jīng)常使用的是它的兩個子類Frame(框架)和Dialog(對話框)??蚣埽‵rame)是帶標(biāo)題和按鈕的頂層窗口。從類的層次上來看,它和Panel都屬于Container類。,5.8 菜 單,5.8.1 菜單(Menu)在GUI界面中,菜單一般位于窗口上方標(biāo)題欄下面的位置,它是一個圖形用戶界面不可缺少的組成部分。在Java中這一部分是由以下幾個類實(shí)現(xiàn)的。,1.MenuBarMenuBar又

41、稱菜單條,一個菜單條構(gòu)件是一個水平菜單,它只能加入到一個框架中,并成為所有菜單樹的根。MenuBar的構(gòu)造方法是MenuBar(),在構(gòu)造之后,還要用setMenuBar()方法將它設(shè)置成窗口的菜單條,然后按照從左到右的順序添加它所包含的下拉菜單。菜單條不支持監(jiān)聽者。作為普通菜單行為的一部分,在菜單條的區(qū)域中發(fā)生的預(yù)期事件會被自動處理。,2.MenuMenu又稱菜單或下拉菜單,它可以加入到一個菜單條或者另一個菜單中。Menu類的構(gòu)造

42、方法有兩種。Menu(String str) 用給定的標(biāo)識構(gòu)造一個菜單。,Menu(String str,boolean b) 用給定的標(biāo)識構(gòu)造一個菜單。如果布爾值為false,那么當(dāng)釋放鼠標(biāo)按鈕后,菜單項(xiàng)會消失。如果布爾值為true,那么釋放鼠標(biāo)按鈕后,菜單項(xiàng)仍將顯示。在創(chuàng)建Menu對象后,使用MenuBar類的add方法將其添加到菜單條中。Disable方法可以使菜單成為不可選的,而enable方法使它成為可選的。,在菜單中

43、可以添加不同的內(nèi)容,可以是菜單項(xiàng)(MenuItem),可以是菜單選項(xiàng)(CheckboxMenuItem),可以是一個子菜單,也可以是分隔符??梢詫⒁粋€ActionListener加入到菜單對象,但這種做法不常用到。通常情況下,菜單只用來顯示和控制菜單條,而這一功能是由構(gòu)件本身自動提供的。,3.MenuItem和CheckboxMenuItemMenuItem稱為菜單項(xiàng),而CheckboxMenuItem稱為菜單選項(xiàng)。它們是一個下拉菜

44、單的具體內(nèi)容,是菜單樹的文本“葉”結(jié)點(diǎn)。一個菜單項(xiàng)一般代表一條命令,而一個菜單選項(xiàng)有選中和不選中兩種狀態(tài)。MenuItem類和CheckboxMenuItem類的構(gòu)造方法如下。,MenuItem(String str):構(gòu)造一個指定標(biāo)識的菜單項(xiàng)。特別地,當(dāng)一個菜單項(xiàng)的指定標(biāo)識為“-”時,它代表一個分隔行。CheckboxMenuItem(String str):構(gòu)造一個指定標(biāo)識的菜單選項(xiàng)。通常將一個ActionListener加入

45、到一個菜單項(xiàng)對象中,以提供菜單的行為??梢杂肐temListener接口來監(jiān)視菜單選項(xiàng)。當(dāng)該菜單選項(xiàng)狀態(tài)發(fā)生改變時,就會調(diào)用itemStateChanged()方法。,下面是一個菜單設(shè)計的綜合范例。例5-21:菜單設(shè)計。import java.awt.*;import java.awt.event.*;public class MenuBar1 extends WindowAdapter implement Action

46、Listener,ItemListener{ Frame win1 = new,Frame("MenuBar1"); MenuBar myMenu=new MenuBar(); Menu fileMenu=new Menu("File"); Menu editMenu=new Menu("Edit"); Menu helpMenu=

47、new Menu("Help"); enu opt = new Menu("Option"); Menu change = new Menu ("Change Color"); MenuItem filenew=new,MenuItem("New"); MenuItem fileopen=new MenuItem("

48、Open"); MenuItem filesave=new MenuItem("Save"); MenuItem fileexit=new MenuItem("Quit"); MenuItem optblue=new,MenuItem("Blue"); MenuItem optgreen=new MenuItem("Green

49、"); MenuItem optred=new MenuItem("Red"); CheckboxMenuItem filemark=new CheckboxMenuItem("Mark",true); Label label=new Label();,MenuBar1(){ win1.setLayout(new FlowLayout());

50、 win1.addWindowListener(this); myMenu.add(fileMenu); myMenu.add(editMenu); myMenu.add(opt); myMenu.add(helpMenu);,fileMenu.add(filenew); fileMenu.add(fileopen); fileMe

51、nu.add(filesave); fileMenu.addSeparator(); fileMenu.add(fileexit); fileexit.addActionListener(this); fileMenu.add(filemark); filemark.addItemListener(this);,opt.add(change);

52、 opt.add(new MenuItem("Change Title")); change.add(optblue); optblue.addActionListener(this); change.add(optgreen); optgreen.addActionListener(this); change.add(optred);

53、,optred.addActionListener(this); win1.add(label); win1.setMenuBar(myMenu); win1.setSize(400,200); win1.setVisible(true); } public static void main(String[] args) { new Menu

54、Bar1(); },public void windowClosing(WindowEvent e) { System.exit(0); } public void actionPerformed(ActionEvent e){ if(e.getSource()==fileexit) System.exit(0);,else if(e.getSource(

55、)==optblue) win1.setBackground(Color.blue); else if(e.getSource()==optgreen) win1.setBackground(Color.green); else if(e.getSource()==optred) win1.setBackground(Color.re

56、d); },public void itemStateChanged(ItemEvent e){ if(e.getSource()==filemark) if(filemark.getState()) label.setText("State of mark is on! ");,else label.se

57、tText("State of mark is off! "); }}運(yùn)行結(jié)果見圖5-20。,圖5-20,5.8.2 彈出式菜單(PopupMenu)例5-22:彈出菜單設(shè)計。import java.awt.*;import java.awt.event.*;public class pmenu extends WindowAdapter implements,ActionLi

58、stener,MouseListener{ Frame win1 = new Frame("彈出式菜單應(yīng)用"); TextArea ta1=new TextArea(); PopupMenu mymenu=new PopupMenu(); MenuItem filenew=new MenuItem("新建");,MenuItem fileopen=new Menu

59、Item("打開"); MenuItem filesave=new MenuItem("保存"); MenuItem fileexit=new MenuItem("退出");,pmenu (){ win1.setLayout(new FlowLayout()); win1.addWindowListener(this);

60、 mymenu.add(filenew); mymenu.add(fileopen); mymenu.add(filesave); mymenu.addSeparator(); mymenu.add(fileexit);,ta1.add(mymenu); win1.add(ta1); ta1.addMouseListener(this)

61、; filenew.addActionListener(this); fileopen.addActionListener(this); filesave.addActionListener(this); fileexit.addActionListener(this); win1.setSize(400,200); win1.setVisi

62、ble(true); },public static void main(String[] args) { new pmenu(); } public void windowClosing(WindowEvent e) { System.exit(0); },public void actionPerformed(ActionEvent e){ ta1.a

63、ppend("你點(diǎn)擊了"+e.getActionCommand()+"命令。\n"); } public void mouseReleased (MouseEvent e){ if(e.isPopupTrigger()) //判斷是否按下鼠標(biāo)右鍵,mymenu.show(win1,e.getX(),e.getY());//在鼠標(biāo)位置顯示彈出菜單 }

64、public void mouseClicked (MouseEvent e){} public void mouseEntered(MouseEvent e){},public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){}}運(yùn)行結(jié)果見圖5-21。,圖5-21,5.9 對 話 框,在GUI圖形用戶界面中,對話

65、框是一個十分重要的構(gòu)件,主要用于顯示提示信息和接收用戶輸入,程序與用戶的交互主要是通過對話框來實(shí)現(xiàn)的。從外觀上看,對話框與窗口十分類似,但它一般是一個臨時的窗口,所以,在對話框中一般不需要菜單條,也不需要改變窗口大小。,對話框是由Dialog類實(shí)現(xiàn)的,從類的繼承關(guān)系上看,它與Frame類都是Window類的子類,而Window類是Container類的子類,Container類又是Component類的子類,因此對話框可以繼承上述父類的

66、所有方法。特別地,作為容器類的一個子類,我們可以向?qū)υ捒蛑刑砑尤我獾臉?gòu)件。,對話框與框架的區(qū)別在于它必須有一個父窗口,當(dāng)父窗口關(guān)閉時,它其中的對話框也被關(guān)閉。另外,對話框可以是無模式和模式的。對于無模式對話框,用戶可以同時與框架和對話框交互,而模式對話框在被關(guān)閉前將阻塞包括框架在內(nèi)的其他所有應(yīng)用程序的輸入。由于對話框是窗口的子類,所以它的缺省布局管理器是Border Layout。,5.9.1 自定義對話框Dialog類的構(gòu)造方

67、法有兩種。(1)Dialog(Frame win,boolean b) 構(gòu)造一個非可視的對話框,用戶可通過show方法將其變?yōu)榭梢暤?。?)Dialog(Frame win,String str,boolean b):構(gòu)造一個非可視的對話框。,5.9.2 文件對話框文件對話框(FileDialog)是對文件進(jìn)行存取時出現(xiàn)的對話框,它是由FileDialog類實(shí)現(xiàn)的,它的構(gòu)造方法有兩種。(1)FileDialog(Fr

68、ame parent,String titel) 構(gòu)造一個讀文件對話框。Frame類型參數(shù)代表文件對話框的擁有者,String類型參數(shù)作為文件對話框的標(biāo)題。,(2)FileDialog(Frame parent,String titel,int mode) 構(gòu)造一個文件對話框。int類型參數(shù)確定是讀文件對話框還是寫文件對話框,它的值可以是FileDialog.LOAD或FileDialog.SAVE。其余參數(shù)含義與上相同。同樣在構(gòu)造

69、完一個文件對話框之后,它仍是非可視的,需要使用show方法使其變?yōu)榭梢暤?。例如:FileDialog fd = new FileDialog(window, "Open File", FileDialog.SAVE);fd.show();,為創(chuàng)建一個寫文件對話框。其父窗口是window,標(biāo)題是Open File 。通常并不需要處理FileDialog的事件,但需要調(diào)用一些常用的函數(shù)進(jìn)行文件操作。常用的文件操作函

70、數(shù)如下:public String getDirectory() 返回文件對話框中的路徑。public void setDirectory(String dir) 設(shè)置路徑。,public string getFile() 返回文件名。public void setFile(String file) 設(shè)置默認(rèn)文件名。public FilenameFilter(FilenameFilter filter) 返回當(dāng)前文件過

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論