Java學(xué)習(xí)筆記-基于馬士兵老師視頻教學(xué)的筆記_第1頁
Java學(xué)習(xí)筆記-基于馬士兵老師視頻教學(xué)的筆記_第2頁
Java學(xué)習(xí)筆記-基于馬士兵老師視頻教學(xué)的筆記_第3頁
Java學(xué)習(xí)筆記-基于馬士兵老師視頻教學(xué)的筆記_第4頁
Java學(xué)習(xí)筆記-基于馬士兵老師視頻教學(xué)的筆記_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java學(xué)習(xí)筆記學(xué)習(xí)Java首先要配置環(huán)境變量,在電腦屬性的高級(jí)中,點(diǎn)擊環(huán)境變量,classpath中有一英文句號(hào)“.”后跟一個(gè)分號(hào),表示當(dāng)前路徑的意思。由第一個(gè)程序Helloworld為例說明Java的基本運(yùn)行代碼:publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println("Hello,World!");}}在Java中只能允許有一個(gè)公共類,此區(qū)別于C++。還有Java的寫作風(fēng)格與C和C++有很大區(qū)別。下面細(xì)談Java的基本語法,與其他語言類似,Java每一條語句都以“;”結(jié)束。shortbytechar之間不會(huì)自動(dòng)轉(zhuǎn)換,他們運(yùn)算時(shí)首先轉(zhuǎn)換為int然后進(jìn)行運(yùn)算;boolean不會(huì)進(jìn)行轉(zhuǎn)換;如:byteb1;byteb2;byteb3=byte(b1+b2);b1+b2運(yùn)算后是int類型,可以bytea=1;//可以把數(shù)值直接賦值不超范圍,(-128~127)floatf1=;longl1=300000000L;f和L一定加上;System.out.println();//輸出后換行System.out.print();//輸出后不換行&&和&的區(qū)別:表達(dá)式1&&表達(dá)式2只要表達(dá)式1錯(cuò)誤,后不再計(jì)算,表達(dá)式1&表達(dá)式2就算表達(dá)式1錯(cuò)誤表達(dá)式2也會(huì)計(jì)算。+既可以作為加號(hào),也可以作為連接符,即左右都是字符串,當(dāng)有一個(gè)是字符串,系統(tǒng)默認(rèn)把另一個(gè)轉(zhuǎn)化為字符串再處理。例如:System.out.println(“c=”+c);打印時(shí),無論任何類型,都先轉(zhuǎn)換為字符型,再進(jìn)行打印。聚合關(guān)系,就是包含關(guān)系,實(shí)現(xiàn)關(guān)系就像虛基類,在派生類中實(shí)現(xiàn)。定義成員變量可以初始化,若不則自動(dòng)初始化(可以直接在成員變量的定義時(shí)初始化);但局部變量一定要自己初始化,boolean類型默認(rèn)為false,其他默認(rèn)為0;在main中調(diào)用函數(shù)時(shí),只要定義了構(gòu)造函數(shù)并且初始化,就一定要把實(shí)參的值寫到函數(shù)里,不能少參數(shù)。因?yàn)樗袛?shù)值定義后都有默認(rèn)值,所以一定要初始化如:intx;x默認(rèn)為0;但是如果都不寫初始值,調(diào)用函數(shù)可以不用參數(shù)。String關(guān)鍵字是字符串定義,不是字符如:(Stringname=“fgsdhj”//也不用寫name[]);必須使用new來創(chuàng)建對(duì)象靜態(tài)數(shù)據(jù)成員static:在類體(Car)中定義的時(shí)候privatestaticintsid=0;……在以后的publicstaticvoidmain()中可以通過Car.sid;或者Carmm; mm.sid;訪問import與package package位于程序開始如packagecom.bjsxt.java140;并把生成相應(yīng)的類放到相應(yīng)的子目錄下即新建文件<在原來類的目錄下新建>com\\bjsxt\\java140,把類的.class文件放在該目錄下,就是打包了,在jdk1.5以后類的.java文件可能也會(huì)影響,所以把.java刪掉。在以后的類中調(diào)用時(shí)可以com.bjsxt.java140.類名=new類名();或者用引入:importcom.bjsxt.java140.類名;或者importcom.bjsxt.java140.*<包括該目錄下所有類>在要打包的上一層文件目錄E:\java\test2\jar–就能把test2目錄下所有文件打包成.jar文件即windows下的壓縮包。繼承權(quán)限:用關(guān)鍵字extends.有privateprotecteddefault<包權(quán)限>public 而private繼承繼承之后也沒有使用權(quán),只有在定義private的類中才可以使用;函數(shù)重寫必須遵循函數(shù)名一樣,參數(shù)類型,返回類型,也必須一致,并在重寫的函數(shù)體中增加相應(yīng)的代碼,不是重載;重寫的函數(shù)不能比被重寫的函數(shù)有更嚴(yán)格的訪問權(quán)限,至少一樣。子類的構(gòu)造方法中必須對(duì)基類的構(gòu)造函數(shù)聲明,在子類的構(gòu)造函數(shù)中首先寫super();里面加參數(shù),意思是調(diào)用基類的構(gòu)造函數(shù),若不寫,系統(tǒng)默認(rèn)調(diào)用基類無參數(shù)的構(gòu)造函數(shù),若基類中沒有無參數(shù)的構(gòu)造函數(shù),則編譯出錯(cuò);在構(gòu)造函數(shù)中,前面可以加public也可以不加;在類與類之間“;”可加可不加,編譯不會(huì)出錯(cuò)。在構(gòu)造函數(shù)的入口參數(shù)設(shè)置是一定注意,與上面的初始化保持一致就好。object類的定義,了解一下,其中有一個(gè)方法,toString方法是返回一個(gè)說明該類的說明,在API文檔中查找,建議重寫。關(guān)于object中,equals方法返回值是boolean,可以重寫,publicbooleanequals(objectobj){}內(nèi)容自定義;在main()中:System.out.println(c==a);或者System.out.println(a.equals(c));一樣用;字符串比較也已也一樣,且不為空才行。對(duì)象類型轉(zhuǎn)換,如Animala=newAnimal();Catc=newCat();System.out.println(cinstanceofa)//輸出true;也可以這樣a=newCat();//基類強(qiáng)制轉(zhuǎn)化為子類,可以,只是a不能訪問Cat類中新定義的類型??梢赃@樣訪問新定義的類型。 Catd=(Cat)a;//用強(qiáng)制類型轉(zhuǎn)化基類為子類,然后轉(zhuǎn)化后一樣用。//e:\java\test2\TestTeacher\關(guān)于多態(tài),一定要有繼承,要有重寫,要有父類指向子類的引用。動(dòng)態(tài)聯(lián)編的實(shí)現(xiàn)是為了以后程序功能的擴(kuò)展,而不改變?cè)创a.//e:\java\teat2\Testdongtai\抽象類:若一個(gè)類中含有抽象和方法,則一定要把給類定義為抽象類,抽象abstract類似于C++中的純虛函數(shù)。 Publicabstractvoidenjoy();就沒有{}內(nèi)部代碼了。而且子類中的重寫父類的那個(gè)方法一定要有實(shí)現(xiàn)代碼,否則報(bào)錯(cuò)。也可以再次把該函數(shù)聲明為抽象類,這樣編譯不會(huì)出錯(cuò)。但是就不能用該子類定義新對(duì)象,因?yàn)槌橄箢愂菤埲钡摹inal關(guān)鍵字中final的變量不能被改變,final的方法不能被重寫,final的類不能被繼承。PublicfinalclassString(){}//寫法如下finalinti=9;interface接口設(shè)置,即為C++中的多重繼承只是接口繼承的時(shí)候不用關(guān)鍵字extends而用implements可以用implementsA,B,C,D{}這是與extends不同地方。在子類中分別實(shí)現(xiàn)積累的代碼,原基類就像抽象類一樣,其函數(shù)的設(shè)置在子類中實(shí)現(xiàn)的。在本例中還涉及強(qiáng)制類型轉(zhuǎn)換,可見性與不可見性的問題,還涉及動(dòng)態(tài)聯(lián)編。//eJava中關(guān)于異常處理機(jī)制,trythrowcatch 其中經(jīng)常使用 catch(ArithmeticExceptione){ System.out.println("系統(tǒng)正在維護(hù),請(qǐng)與管理員聯(lián)系"); e.printStackTrace();//其中e就像一個(gè)類的對(duì)象一樣使用,e.printStackTrace();是打印出錯(cuò)的堆棧信息,以便修正。ArithmeticException和printStackTrace()是系統(tǒng)自己定義的。20.finally{}是一定執(zhí)行的語句,catch語句之后自動(dòng)停止,以后不再執(zhí)行。對(duì)所有異常處理,可以直接拋出throwsException{} 不管是IoException或是NotFoundFileException……;不想處理就繼續(xù)拋出。方法重寫必須與原來的拋出的異常一致,不得是別的。但是不拋異常沒有關(guān)系。21.數(shù)組定義,也是引用,int[]s,或是ints[];只是中括號(hào)內(nèi)不能有數(shù)字,區(qū)別于c++;如: int[]a;//聲明數(shù)組名字a=newint[5];//動(dòng)態(tài)分配空間 在動(dòng)態(tài)分布空間之后, a.length自動(dòng)記錄數(shù)組的長(zhǎng)度,以后可以直接調(diào)用。22.ipconfig在命令行可以顯示ip地址,ipconfig-all可以顯示更詳細(xì)的信息;23.在main函數(shù)中,(String[]args)的作用是把在命令行執(zhí)行時(shí)加的參數(shù)自動(dòng)保存在agrs數(shù)組里面; 補(bǔ)充:在基本數(shù)據(jù)類型里面,可以通過double()把一個(gè)字符類型的變量轉(zhuǎn)化為double類型。其他類型類似,比如intfloatbyte。。。。。。直接把’3’24.函數(shù)返回值類型可以是數(shù)組類型,publicstaticDate[]bubblesort(Datea){……returna;}這樣也是可以實(shí)現(xiàn)的。25.二位數(shù)組定義,初始化時(shí),inta[3][2]={{1,2},{2,3},{23,1}};是錯(cuò)誤的,不能寫3,java自動(dòng)檢查長(zhǎng)度。26.關(guān)于string,有很多種方法,就關(guān)于字符串的種種處理,大小寫處理,空格處理(trim),截取字符,把字符分割成子串(split),查找API文檔。Stringbuffer是可變的字符序列,與不可變的string相比,更加具有優(yōu)勢(shì),方法與其類似,在執(zhí)行效率上比較高。27.d[i][j]=Double.valueOf(sSecond[j]);把字符串轉(zhuǎn)化為double類型的數(shù)據(jù),調(diào)用double的方法,在前面加上Double.一定不要少。包括二維數(shù)組的定義使用,把兩維分開來寫。//E:/java/test6/ArrayParser.java28.Math類java.lang.math與數(shù)學(xué)相關(guān)的一些方法,F(xiàn)ile與文件相關(guān)的方法,java.io.*;文件的創(chuàng)建,F(xiàn)ile(\o"classinjava.lang"Stringparent,\o"classinjava.lang"Stringchild)parent代表路徑,而child是要?jiǎng)?chuàng)建的文件名稱。f.getParentFile().mkdirs();//只是把對(duì)應(yīng)的目錄創(chuàng)建成功文件并沒有生成。//e29.枚舉類型規(guī)定只能取規(guī)定的值,其余的不允許取值,在游戲開發(fā)時(shí)多用,如:publicenummycolour{red,green,blue};mycolourm=mycolour.red;訪問時(shí)類似于靜態(tài)成員變量的訪問??梢蕴崆鞍l(fā)現(xiàn)錯(cuò)誤,在編譯時(shí)發(fā)現(xiàn)。容器:30.List與SetMap:(都是接口)Set的數(shù)據(jù)對(duì)象是沒有順序不可重復(fù)的,即重復(fù)的元素不會(huì)被加入集合。vaList的數(shù)據(jù)對(duì)象是有順序可以重復(fù)的,自增了一些方法,見API。Map是把數(shù)據(jù)成對(duì)成對(duì)地裝入容器。Put方法是object的原因是當(dāng)放入的key已經(jīng)存在時(shí),原來的value被替換掉,作為返回值返回。Get方法返回的是value.31.iterator是collection的一個(gè)接口,其作用是容器的遍歷,其方法有hasNext,next,remove具體用法是Iteratori=c.iterator();//c為Collectionc=newHashSet();然后i就可以調(diào)用Iterator的方法了。Iterator的remove方法是迭代過程中刪除元素的唯一安全的方法。而不是c.remove。32.Collections類封裝了List許多靜態(tài)的方法。調(diào)用的時(shí)候,因?yàn)槭庆o態(tài)的方法,所以直接用類名加方法就行,如Collections.sort(l1);l1為L(zhǎng)ist的容器從低到高排序//e:\java\test7\T33.(補(bǔ)充)privatestaticfinalintone=1;//關(guān)鍵字的順序關(guān)于args在運(yùn)行java。。。。。。。命令時(shí),在后面加上數(shù)字字母。。。就是加在agrs數(shù)組中。數(shù)組的args的長(zhǎng)度args.length沒有括號(hào)六個(gè)基本類型\o"java.lang中的類"Byte,\o"java.lang中的類"Double,\o"java.lang中的類"Float,\o"java.lang中的類"Integer,\o"java.lang中的類"Long,\o"java.lang中的類"ShortInteger是int的包裝類其目的是方便各種數(shù)據(jù)的轉(zhuǎn)換,如intnum=Integer.valueOf(“12”doublenum2=Double.valueOf(“”);//通過基本包裝數(shù)據(jù)類型的valueOf和parseXX實(shí)現(xiàn)String轉(zhuǎn)換為XXStringa=String.valueOf(“1234”Stringb=String.valueOf(true);Stringc=newInteger(12).toString();//通過包裝類的toString也可以34.泛型寫法:Map<String,Integer>m1=newHashMap<String,Integer>();具體使用方法見java文件以后用集合的時(shí)候盡量使用泛型//E:\java\test7\TestMap2.java//e:\java\test7\BasicGeneric.java(使用Iterator時(shí)使用泛型)IO:35.InputStreamOutputStreamReaderWriter都是抽象類不能直接new也就是實(shí)例化,其具體的實(shí)類為FileInputStreamFileOutputStreamFileReaderFileWriter,字節(jié)流是一個(gè)字節(jié)一個(gè)字節(jié)讀寫字符流可以寫漢字(一個(gè)字符兩個(gè)字節(jié))。InputStream方法:OutputStream方法:ReaderWriter類似。<補(bǔ)充:GBK是中文windows默認(rèn)的字符編碼1310是回車符的ASIC碼>36.BUffeedrStream:BufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStream提供緩沖區(qū)支持父類的mark與reset方法,不太常用mark是標(biāo)記位置從標(biāo)記的地方開始讀寫,reset是重置,即是讀寫后再次回到標(biāo)記的位置。BufferedReader提供了readLine方法用于讀取一行字符串。在輸出readLine的內(nèi)容的時(shí)候用println(),好像readLine不讀取換行符。BufferedWriter提供了newLine方法寫入一個(gè)行分隔符。包括OutputStreamWriter與InputStreamReader意思是把字節(jié)型的流轉(zhuǎn)化為字符型的流。方法與前面類似。補(bǔ)充FileOutputStream的構(gòu)造方法FileOutputStream(Stringstr,true)的意思是在打開的文件追加內(nèi)容而不是覆蓋。OutputStreamWriter在API文檔中沒有找到可以直接寫的方法voidwrite(Stringstr)但是可以這樣用InputStreamReader InputStreamReaderisr=newInputStreamReader(System.in);本身就是FileStream類型的。這是寫了兩個(gè)處理流,的意思是標(biāo)準(zhǔn)的輸入,在命令行中輸入內(nèi)容。38.DataIO ByteArrayOutputStreambaos=newByteArrayOutputStream();有兩個(gè)作用一是在內(nèi)存中分配字節(jié)數(shù)組,二是將OutputStream的管道接到字節(jié)數(shù)組中。ByteArrayInputStreambais=newByteArrayInputStream(baos.toByteArray());ByteArrayInputStream的構(gòu)造方法傳的參數(shù)一定是字節(jié)數(shù)組。baos.toByteArray(),就是通過管道接口轉(zhuǎn)化的字節(jié)數(shù)組。另外字節(jié)數(shù)組的遵循隊(duì)列原則先進(jìn)先讀直接調(diào)用writeDouble,readDouble方法就可以實(shí)現(xiàn)。要是發(fā)送一個(gè)long類型的數(shù),需要ByteArrayOutoutStream和DataOutputStream包裝轉(zhuǎn)化同時(shí)服務(wù)器也要ByteArrayInputStream與DataInputStream在網(wǎng)絡(luò)游戲中發(fā)送位置信息用的比較多。FileOutputStreamfos=newFileOutputStream("e:\\java\\123.txt",true); PrintStreamps=newPrintStream(fos); System.setOut(ps);//把命令行要顯示的東西直接通過管道與文件鏈接,寫進(jìn)文件。BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));一定這樣寫因?yàn)锽ufferedReader的構(gòu)造方法傳的參數(shù)是Reader型的,所以要用InputStreamReader過渡一下,是InputStream類的。此例子是為了說明日志的作用,通過文件記錄操作,并形成可以查閱的文檔。ObjectOutputStream與ObjectInputStream是抽象類ObjectOutput與ObjectInput的實(shí)例化,傳的參數(shù)一定是OutputStream與InputStram作用是把類序列化存盤。把整個(gè)類的內(nèi)存全部存盤,foo.writeObject(a);//foo是ObjectOutputStream,直接將管道接到文件上的。a是類的對(duì)象。讀取的時(shí)候Tb=(T)ois.readObject();//readObject返回的是Object類要強(qiáng)制轉(zhuǎn)化ois是ObjectInputStream。 transientbooleanc=true;//transient關(guān)鍵字是修飾的將不被參與序列化保持原來的默認(rèn)值。<補(bǔ)充> publicstaticvoidmain(String[]args)throwsException{}//異常可直接拋出不作處理將要被序列化的類要繼承Serializable接口,這個(gè)接口沒有方法,只是用于標(biāo)記這個(gè)類可以被序列化。classTimplementsSerializable{}Thread:41.啟動(dòng)線程第一種方法:實(shí)現(xiàn)Runnable接口emplementsRunnable{重寫publicvoidrun()方法};在主線程中,new一個(gè)thread對(duì)象,Threada=newThread(參數(shù)是emplementsRunnable的類的對(duì)象);然后a.start();啟動(dòng)線程。第二種方法:繼承Thread類,extendsThread{重寫publicvoidrun()方法},在主線程中,用繼承extendsThread的類new一個(gè)對(duì)象,調(diào)用start()方法即可。在第一種方法的時(shí)候直接調(diào)用run的方法是不可以的,這樣不是多線程,而是方法調(diào)用。兩種方法的選取,繼承接口第一種比較靈活,因?yàn)槔^承Thread類不能再繼承了,所以第一種更加好。42.線程控制基本方法:sleep是Thread的靜態(tài)法方法,傳的參數(shù)是毫秒,在那個(gè)線程中,那個(gè)線程就進(jìn)入睡眠狀態(tài)。可以如是調(diào)用Thread.sleep(1000)。會(huì)拋出InterruptedException.在調(diào)用重寫方法的時(shí)候要是想對(duì)異常不作處理想直接拋出,該方法不能拋出與該方法不同的異常。調(diào)用interrupt方法可以打斷線程。join方法是合并線程就是把單獨(dú)運(yùn)行的線程合并,只執(zhí)行一個(gè)線程執(zhí)行完之后再運(yùn)行另一個(gè),其本質(zhì)類似于方法的調(diào)用,離開現(xiàn)場(chǎng),保護(hù)現(xiàn)場(chǎng),回復(fù)現(xiàn)場(chǎng)。在一個(gè)時(shí)間點(diǎn)全部執(zhí)行一個(gè)線程,執(zhí)行完就返回到那個(gè)點(diǎn),繼續(xù)向下執(zhí)行,就失去多線程的意義。yield是讓出線程給別人執(zhí)行,不會(huì)拋出異常。到設(shè)定的時(shí)間點(diǎn)哪怕只執(zhí)行一點(diǎn)點(diǎn)也會(huì)騰出空間給下一個(gè)線程執(zhí)行。優(yōu)先級(jí)設(shè)置用過Thread類的方法setPriority();優(yōu)先級(jí)分為10等級(jí),默認(rèn)為5,優(yōu)先級(jí)越高獲得執(zhí)行的時(shí)間越長(zhǎng)。43.線程同步:publicsynchronizedvoidadd(Strings){ //synchronized(this){ num++; try{ Thread.sleep(1); }catch(InterruptedExceptione){} System.out.println(s+"is"+num+"timer"); //}//兩種方式都可以自鎖目的是只允許一個(gè)線程在運(yùn)行synchronized是關(guān)鍵字自鎖的意思。即是同一個(gè)資源在同一時(shí)間只能被一個(gè)線程訪問,防止錯(cuò)誤,比如銀行系統(tǒng)扣費(fèi)。對(duì)同一個(gè)資源加鎖,對(duì)其所有訪問此資源的所有方法都要加鎖,所謂的同步,要仔細(xì)考慮。Socket:44.publicstaticvoidmain(String[]args)throwsException{ ServerSocketss=newServerSocket(6666); //從1024之后的到65556的端口自己可以隨便寫,之前的被系統(tǒng)征用。6666代表端口號(hào) ServerSocket是服務(wù)器端 while(true){ Sockets=ss.accept();//返回值是Socket,此時(shí)表示已經(jīng)連接成功。 DataInputStreamdis=newDataInputStream(s.getInputStream());//可以與管道融合,調(diào)用流的特別方法 System.out.println("aclientconnet!"); System.out.println(dis.readUTF()); s.close();//流與客戶端都要關(guān)閉 dis.close();//服務(wù)器用于接收信息顯示所以是InputStream在客戶端是OutptStreamSockets=newSocket("127.0.0.1",6666); OutputStreamos=s.getOutputStream(); DataOutputStreamdos=newDataOutputStream(os); ServerSocket與Socket都是有InputStreamOutputStream45.UDP:這是相當(dāng)于服務(wù)器接收端:byte[]buf=newbyte[1024]; DatagramPacketdp=newDatagramPacket(buf,buf.length); DatagramSocketds=newDatagramSocket(5678); while(true){ ds.receive(dp); System.out.println(newString(buf,0,dp.getLength())); 先定義字節(jié)數(shù)組用于存儲(chǔ)接受的數(shù)據(jù),DatagramPacket數(shù)據(jù)包DatagramSocket構(gòu)造方法有很多,5678是UDP的端口,ds.receive(dp);是阻塞式的,會(huì)一直等在那里知道有數(shù)據(jù)傳輸,dp.getLength()并不一定是1024只是接受數(shù)據(jù)的多少。這是相當(dāng)于客戶端:byte[]buf=newString("HelloWorld").getBytes(); DatagramPacketdp=newDatagramPacket(buf,buf.length,newInetSocketAddress("127.0.0.1",5678)); DatagramSocketds=newDatagramSocket(9999); ds.send(dp); ds.close();newString(“……”).getBytes()方法把String轉(zhuǎn)成字節(jié)數(shù)組。DatagramPacketdp=newDatagramPacket(buf,buf.length,newInetSocketAddress("127.0.0.1",5678));這是用于發(fā)送數(shù)據(jù)的數(shù)據(jù)包,構(gòu)造方法不同,最后一個(gè)是客戶端自己用于發(fā)送接受的端口區(qū)別于TCP.Panel與Frame的關(guān)系是Frame可以直接顯示出來而Panel只能添加到Frame才能顯示Dialog是打開程序彈出的窗口與廠家聯(lián)系之類的。計(jì)算機(jī)的三原色是紅綠藍(lán)newcolor(inta,intb,intc);Abc最大是255Frame設(shè)置坐標(biāo)是相對(duì)于整個(gè)窗口,而Panel顯示是相對(duì)于裝她的Frame。布局管理器:FlowLayout默認(rèn)對(duì)齊方式是居中,水平豎直默認(rèn)間距是5,是Panel的默認(rèn)管理器。FlowLayoutl=newFlowLayout(FlowLayout.CENTER,20,40);此時(shí)水平間距20豎直間距40.BorderLayout:是Frame的默認(rèn)管理器,分為東西南北中,5個(gè)部分。GridLayout是表格劃分NewGridLayout(3,2);3行2列的作用。TextField:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論