




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實 驗 報 告課程名稱: Java技術 學生姓名: 學號: 專業班級: 指導教師: 年 月 日實驗一Java開發環境的安裝與配置學院信息工程系專業班級姓名學號成績課程名稱Java技術實驗項目名 稱實驗一 Java開發環境的安裝與配置指導教師教師評語 教師簽名: 年 月 日一、實驗目的1. 掌握JDK的安裝步驟。2. 理解環境變量PATH, CLASSPATH的作用,以及它們的設置方法(Win XP、WIN7、WIN8、WIN10、Linux下的不同設置方法)。3. 熟悉TextPad(JCreator或Eclipse)編輯環境,編寫簡單的Application程序,并編譯和解釋執行。4. 記錄
2、編譯和執行Java程序當中的系統錯誤信息提示,并給出解決辦法。二、實驗原理1.源程序編譯:使用Eclipse或者Notepad+2.程序編譯:使用JDK中的javac工具3.程序運行:使用java工具或者使用Eclipse直接運行4.掌握安裝JDK以及環境變量的設置5. 在Notepad+環境下編寫一個HelloWorld.java程序,在DOS提示符下編譯并執行這個程序6. 編寫一個類A,它位于包a中,保存到A.java中,再編寫一個類B,它位于包b中,保存到B.java中。在類B中實例化類A的一個對象。分別編譯類A和類B。三、使用硬件、軟件環境硬件環境:i5-7200U+8G內存+256G
3、硬盤軟件環境:Windows 10操作系統開發工具:Eclipse四、實驗過程、步驟及原始記錄(算法、原程序、測試結果,分析等)1從 下載最新版本的JDK,并安裝。(或者用已有文件安裝)安裝過程:安裝Jdk集成環境,安裝成功后,配置path,classpath路徑,讓用戶在任何目錄下均可用到Java的系統資源 先配置%JAVA_HOME%環境變量,路徑為jdk的目錄; 配置path環境變量,路徑為%JAVA_HOME%bin; 再配置classpath環境變量路徑為;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar2設置環境變量PATH, CLASSPATH, 使得
4、Java程序能正確編譯和執行。3在 Textpad(JCreator或Eclipse)環境下編寫一個HelloWorld.java程序,在DOS提示符下編譯并執行這個程序。實驗過程:在Notepad+中寫出如下代碼,并保存為HelloWorld.java:源代碼:public class HelloWorld public static void main(String args) System.out.println("Hello World!");在命令行中進入到該文件路徑,并輸入javacHelloWorld.java完成編譯,再輸入javaHelloWorld完成運
5、行運行結果:4編寫一個類A,它位于包a中,保存到A.java中,再編寫一個類B,它位于包b中,保存到B.java中。在類B中實例化類A的一個對象。分別編譯類A和類B。實驗過程:用Eclipse編寫包 a 包 b 的程序,并用 DOS 命令行運行。源代碼:A:package a;public class A public void OUT() System.out.println("this is a!");B:package b;import a.*;public class B public static void main(String args) A a = new
6、A();a.OUT();運行結果:五、實驗結論、分析、思考題與心得體會心得體會通過本次實驗,我對于Java的一些基本知識有所了解,下面我將進行總結:1.我學習了如何安裝JDK,以及配置JAVA環境2.我學習了使用Notepad+記事本環境下編寫Java程序,并使用命令行來編譯執行程序3.我學會了在Eclipse環境下編寫與運行Java程序。4.我對于Java的一些基本語法與使用有所了解,包括:文件名必須與public類的類名相同,一個Java應用程序最多只允許有一個public類,并且有且只允許有一個主類,Java對于大小寫敏感,同時支持中文標識符開發一個Java程序需要經過三個步驟:編寫源程
7、序、編譯源文件生成字節碼、加載運行字節碼 在用DOS命令運行包中的Java文件時,要先編譯A.Java,再編譯B.Java,同時注意運行有包名的主類時,要使用包名.主類名,即java b.B思考題1. 什么是JVM,它的作用是什么?JVM是Java虛擬機。它是一個虛構出來的計算機。可在實際的計算機上模擬各種計算機功能。作用:將.class字節碼文件編譯成機器語言,以便機器識別。2. 如何理解PATH和CLASSPATH,如何設置它們。path是系統用來指定可執行文件的完整路徑java的各種操作命令是在其安裝路徑中的bin目錄下,所以在path中設置了JDK的安裝目錄后就不用再把java文件的完
8、整路徑寫出來了,它會自動去path中設置的路徑中去找;classpath是指定你在程序中所使用的類(.class)文件所在的位置在引入一個類時:這句話是告訴編譯器要引入javax.swing這個包下的JTable類,而classpath就是告訴編譯器該到哪里去找到這個類假設JDK安裝路徑:E:Program FilesJavajdk變量名:PATH變量值:E:Program FilesJavajdkbin 變量名:CLASSPATH變量值:E:Program FilesJavajdk1libtools.jar;E:Program FilesJavajdk1jrelibdt.jar實驗二類的封裝
9、、繼承、多態學院信息工程系專業班級姓名學號成績課程名稱Java技術實驗項目名 稱實驗二類的封裝、繼承、多態指導教師教師評語 教師簽名: 年 月 日一、實驗目的1. 復習、理解OOP的三大特征封裝、繼承和多態。2. 學會使用Java編寫簡單的類。理解類的屬性和方法。3. 掌握關鍵字private, protected, public的作用,掌握靜態類,內部類的概念。4. 掌握多態的概念。二、實驗原理1.分別編寫兩個類Point2D,Point3D來表示二維空間和三維空間的點,使之滿足下列要求:(1) Point2D有兩個整型成員變量x, y (分別為二維空間的X,Y方向坐標),Point2D的構
10、造方法要實現對其成員變量x, y的初始化。(2) Point2D有一個void型成員方法offset(int a, int b),它可以實現Point2D的平移。(3) Point3D是Point2D的直接子類,它有有三個整型成員變量x,y,z (分別為三維空間的X,Y,Z方向坐標),Point3D有兩個構造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),兩者均可實現對Point3D的成員變量x, y,z的初始化。(4) Point3D有一個void型成員方法offset(int a, int b,int c),該方法可以實現Poi
11、nt3D的平移。(5) 在Point3D中的主函數main()中實例化兩個Point2D的對象p2d1,p2d2,打印出它們之間的距離,再實例化兩個Point3D的對象p3d1,p3d2,打印出他們之間的距離。2.創建一個數組,隨機生成Point2D或者Point3D的對象放于其中。最后依次調用數組中每個對象的“打印方法” ,顯示數組中存儲的對象是什么。提示:java.lang.Math.random()方法 或者類三、使用硬件、軟件環境硬件環境:i5-7200U+8G內存+256G硬盤軟件環境:Windows 10操作系統開發工具:Eclipse四、實驗過程、步驟及原始記錄(算法、原程序、測
12、試結果,分析等)1.分別編寫兩個類Point2D,Point3D來表示二維空間和三維空間的點:(1) Point2D有兩個整型成員變量x, y (分別為二維空間的X,Y方向坐標),Point2D的構造方法要實現對其成員變量x, y的初始化。(2) Point2D有一個void型成員方法offset(int a, int b),它可以實現Point2D的平移。(3) Point3D是Point2D的直接子類,它有有三個整型成員變量x,y,z (分別為三維空間的X,Y,Z方向坐標),Point3D有兩個構造方法:Point3D(int x,int y,int z)和Point3D(Point2D
13、p,int z),兩者均可實現對Point3D的成員變量x, y,z的初始化。(4) Point3D有一個void型成員方法offset(int a, int b,int c),該方法可以實現Point3D的平移。(5) 在Point3D中的主函數main()中實例化兩個Point2D的對象p2d1,p2d2,打印出它們之間的距離,再實例化兩個Point3D的對象p3d1,p3d2,打印出他們之間的距離。利用類的繼承寫一個 point2D 類,其子類是 point3D 。子類 Point3D 的構造函數調用了父類的構造函數; 計算平面兩點的距離函數和計算空間兩點的距離函數寫在父類 Point2
14、D 中,并且他們是靜態方法, 在子類繼承后, 在其主方法 (主方法是靜態的) 中可以直接調用 (或者通過類名調用) ;另外平移函數可以對點進行平移源代碼:import java.util.*;import java.lang.Math;class Point2Dint X, Y;public Point2D()/無形參的構造方法,一定要有public Point2D(int x,int y)this.X=x;this.Y=y;public void offset(int a, int b)/2D平移方法this.X+=a;this.Y+=b;public void printInfo()Sys
15、tem.out.println("X= "+this.X+"nY= "+this.Y);public void distance(Point2D p) double DT=1;DT*=(this.X-p.X)*(this.X-p.X)+(this.Y-p.Y)*(this.Y-p.Y);System.out.println("2D 距離:"+Math.sqrt(DT); class Point3D extends Point2Dint Z;public Point3D()/無形參的構造方法,一定要有public Point3D(int
16、 x,int y,int z)this.X=x;this.Y=y;this.Z=z;Point3D(Point2D p,int z)this.X=p.X;this.Y=p.Y;this.Z=z;public void offset(int a, int b,int c)/3D平移方法this.X+=a;this.Y+=b;this.Z+=c; public void printInfo()System.out.println("X= "+this.X+"nY= "+this.Y+"nZ= "+this.Z); public void
17、distance(Point3D p) double DT=1;DT*=(this.X-p.X)*(this.X-p.X)+(this.Y-p.Y)*(this.Y-p.Y)+(this.Z-p.Z)*(this.Z-p.Z);System.out.println("3D 距離:"+Math.sqrt(DT); public class Alex public static void main(String args) System.out.print("*錄入信息*n");Scanner cin = new Scanner(System.in);int
18、 x=new int2;int y=new int2;int z=new int2;for(int i=1;i<3;i+)System.out.print("錄入第 "+ i +" 個 2D 平面坐標n 輸入橫坐標X:");xi-1=cin.nextInt();System.out.print(" 輸入縱坐標Y:");yi-1=cin.nextInt();Point2D _2Dp1=new Point2D(x0,y0);Point2D _2Dp2=new Point2D(x1,y1);_2Dp1.printInfo();_2Dp
19、2.printInfo();System.out.println("現在將 2D 平面圖,3D 化,請給出 豎坐標Z的值");for(int i=1;i<3;i+)System.out.print("錄入第 "+ i +" 個 3D 平面坐標n 輸入豎坐標Z:");zi-1=cin.nextInt();Point3D _3Dp1=new Point3D(_2Dp1,z0);Point3D _3Dp2=new Point3D(_2Dp2,z1);_3Dp1.printInfo();_3Dp2.printInfo();System.
20、out.println("平移 2D 圖形:");for(int i=1;i<3;i+)System.out.print("錄入第 "+ i +" 個 2D 圖形的平移量n 輸入橫坐標X的平移量:");xi-1=cin.nextInt();System.out.print(" 輸入縱坐標Y的平移量:");yi-1=cin.nextInt();_2Dp1.offset(x0, y0);_2Dp2.offset(x1, y1);_2Dp1.printInfo();_2Dp2.printInfo();for(int
21、 i=1;i<3;i+)System.out.print("錄入第 "+ i +" 個 3D 圖形的平移量n 輸入豎坐標Z的平移量:");zi-1=cin.nextInt();_3Dp1.offset(x0,y0,z0);_3Dp2.offset(x1,y1,z1);_3Dp1.printInfo();_3Dp2.printInfo();_2Dp1.distance(_2Dp2);_3Dp1.distance(_3Dp2); 運行結果:2.創建一個數組,隨機生成Point2D或者Point3D的對象放于其中。最后依次調用數組中每個對象的“打印方法”
22、 ,顯示數組中存儲的對象是什么。思想:使用Math.random()生成數組個數,點的個數1-5個,接著依次給Point2D數組P隨機輸入一個1-50的整數,接著每次調用,調用Point2D中方法printInfo(),輸出點,除了第一次每次調用Pi.distance(Pi - 1),輸出當前點與上一個點的距離。Point3D數組同上操作源代碼:除了主類外,其它同1中的代碼,下面給出主類public class Point public static void main(String args) Point2D P=new Point2D(int)(Math.random()*5) + 1;/
23、隨機生成數組個數System.out.println("輸出2D數組,并輸出與上一點的距離:");for(int i=0;i<P.length;i+)int x=1+(int)(Math.random()*50);int y=1+(int)(Math.random()*50);System.out.println("第" + (i+1) +"個點:");Pi=new Point2D(x,y);Pi.printInfo();if(i != 0)System.out.println("與上一點的距離為:");Pi
24、.distance(Pi - 1);System.out.println();System.out.println("輸出3D數組,并輸出與上一點的距離:");Point3D P1=new Point3D(int)(Math.random()*5) + 1;/隨機生成數組個數for(int i=0;i<P1.length;i+)int x=1+(int)(Math.random()*50);int y=1+(int)(Math.random()*50);int z=1+(int)(Math.random()*50);P1i=new Point3D(x,y,z);Sys
25、tem.out.println("第" + (i+1) +"個點:");P1i.printInfo();if(i != 0)System.out.println("與上一點的距離為:");P1i.distance(P1i - 1);五、實驗結論、分析、思考題與心得體會心得體會通過本次實驗,我對于Java如何實現類的繼承、封裝、多態有了初步的了解,并且學會了如何使用Java語言編寫簡單的類,理解了類的屬性和方法,同時掌握關鍵字private, protected, public的作用,以及靜態類,內部類、多態的概念在實驗過程中,也有了一
26、些心得體會:子類繼承父類的非私有成員,但不能繼承構造方法,必須用super()來調用父類的構造方法。構造方法可以通過形參的個數、類型、排列不同來重載,同時也學會了如何實現類方法的多態。Static靜態方法只能直接調用靜態成員,不能直接調用非靜態成員,基本掌握了Math 類中靜態方法,Math.pow() 和 Math.sqrt()的使用,同時學會了如何使用Math. random()生成隨機數,和如何建立對象的數組。思考題什么是類的多態性。一是操作名稱的多態,即多個操作具有相同的名字,但這些操作所接收的信息類型必須不同。所謂操作名稱的多態,是指可以向操作傳遞不同的信息,以便讓對象根據相應的信息
27、來產生一定的行為。另一種多態是和繼承有關的多態,是指同一個操作數被不同類型對象調用時可能產生不同的行為。實驗三輸入輸出流學院信息工程系專業班級姓名學號成績課程名稱Java技術實驗項目名 稱實驗三輸入輸出流指導教師教師評語 教師簽名: 年 月 日一、實驗目的1. 掌握Java I/O基本原理。2. 學會使用Java提供的實用類來完成特定的功能。3. 掌握FileInputStream、FileOutputStream抽象類的基本使用方法。4. 掌握FileReader、FileWriter、BufferedReader、BufferedWriter抽象類的基本使用方法。二、實驗原理1. 使用Fi
28、leInputStream、FileOutputStream、FileReader、FileWriter、BufferedReader、BufferedWriter抽象類實現從文件中讀取內容,并添加所想要輸入的內容,接著一行一行輸入到另一個文件中。2. 實現給出的Java Application程序,并分析其功能。3. 現有如下格式的成績單(文本格式)score.txt:姓名:張三,數學72分,物理67分,英語70分.姓名:李四,數學92分,物理98分,英語88分.姓名:周五,數學68分,物理80分,英語77分.要求按給定的程序模板編寫一個Java程序,能按行讀入上述格式的成績單,并在該行的后
29、面尾加上該同學的總成績,然后再將該行寫入到一個名字為socreAnalysis.txt的文件中。三、使用硬件、軟件環境硬件環境:i5-7200U+8G內存+256G硬盤軟件環境:Windows 10操作系統開發工具:Eclipse四、實驗過程、步驟及原始記錄(算法、原程序、測試結果,分析等)1該程序的功能是通過處理字節流的抽象類:InputStream和OutputStream完成文件的復制:先使用字節流從“copyFile.java”文件中讀取數據,接著將讀取到的數據寫入到“temp.txt”文件中去,實現copy功能。源代碼:import java.io.*;public class Co
30、pyFile public static void main(String args) try FileInputStream fis = new FileInputStream("src/CopyFile.java"); FileOutputStream fos = new FileOutputStream("temp.txt"); int read = fis.read(); while ( read != -1 ) fos.write(read); read = fis.read(); fis.close(); fos.close(); catch
31、 (IOException e) System.out.println(e); 運行結果:2. AnalysisResult.java源代碼:import java.io.*;import java.util.*;public class AnalysisResultpublic static void main(String args)File fRead=new File("score.txt");File fWrite=new File("scoreAnalysis.txt");tryWriter out= new FileWriter(fWrit
32、e,true);/以尾加方式創建指向文件fWrite的out流BufferedWriter bufferWrite=new BufferedWriter(out); /創建指向out的bufferWrite流Reader in=new FileReader(fRead); /創建指向文件fRead的in流BufferedReader bufferRead=new BufferedReader(in); /創建指向in的bufferRead流String str=null;while (str=bufferRead.readLine()!=null)double totalScore =Fenx
33、i.getTotalScore(str);str=str+"總分:"+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();bufferRead.close();bufferWrite.close();catch(IOException e)System.out.println(e.toString();Fenxi.java源代碼:import java.util.*;public class Fenxipublic static double getTotalScor
34、e(String s)Scanner scanner=new Scanner(s);scanner.useDelimiter("0123456789.+");double totalScore=0;while(scanner.hasNext()trydouble score=scanner.nextDouble();totalScore=totalScore+score;catch(InputMismatchException exp)String t=scanner.next();return totalScore;運行結果:記事本信息:五、實驗結論、分析、思考題與心得體
35、會通過本次實驗,我對于Java語言關于輸入輸出流的部分有了一定的了解,下面是我的一些收獲:1. 掌握Java I/O基本原理:Java中的IO包中的類可以處理不同類型的流,例如:字節流(byte)、字符流(character)、文件流、對象流等。java.io中的抽象類包括:處理字節流的抽象類:InputStream和OutputStream,處理過濾流的抽象類:FilterOutputStream和FilterInputStream,處理字符流的抽象類:Reader和Writer,處理壓縮流的抽象類:InflaterInputStream和DeflaterOutputStream2.學會如何
36、使用Java給出的各種輸入輸出流來實現一系列的問題,包括:從文件的讀取數據、使用輸出流對數據進行加工存儲到文件中等。3.掌握了FileInputStream、FileOutputStream抽象類的基本使用方法,并實際操作實現了讀取與存儲拷貝。4.掌握了FileReader、FileWriter、BufferedReader、BufferedWriter抽象類的基本使用方法,實現修改讀取的內容,添加內容存儲進入文件中。實驗四基于GUI的網絡通信程序設計學院信息工程系專業班級姓名學號成績課程名稱Java技術實驗項目名 稱實驗四基于GUI的網絡通信程序設計指導教師教師評語 教師簽名: 年 月 日一
37、、實驗目的1. 掌握Java中GUI程序的編寫,包括事件監聽機制。2. 掌握Java的網絡通信編程,ServerSocket,Socket類的使用。3. 掌握Java中多線程的編程,Thread類,Runnable接口的使用。4. 掌握用面向對象的方法分析和解決復雜問題。二、實驗原理使用Java Swing中的組件實現GUI程序的編寫,包括使用監聽器、ServerSocket,Socket類實現輸入輸出數據。同時使用Thread類,Runnable接口,實現多線程執行程序。(1)設計一個基于GUI的客戶-服務器的通信應用程序,如圖1,圖2所示。圖1 Socket通信服務器端界面圖2 Socke
38、t通信客戶端界面(2)圖1為Socket通信服務器端界面,點擊該界面中的【Start】按鈕,啟動服務器監聽服務(在圖1界面中間的多行文本區域顯示“Server starting”字樣)。圖2為Socket通信客戶端界面,點擊該界面中的【Connect】按鈕與服務器建立鏈接,并在圖2所示界面中間的多行文本區域顯示“Connect to server”字樣,當服務器端監聽到客戶端的連接后,在圖1界面中間的多行文本區域追加一行“Client connected”字樣,并與客戶端建立Socket連接。(3)當圖1所示的服務器端和圖2所示的客戶機端建立Socket連接后,編程實現這兩端的數據通信,每次將
39、接收到對方的數據追加顯示在多行文本框中。三、使用硬件、軟件環境硬件環境:i5-7200U+8G內存+256G硬盤軟件環境:Windows 10操作系統開發工具:Eclipse四、實驗過程、步驟及原始記錄(算法、原程序、測試結果,分析等)1、編寫兩個文件Client.java 與Server.java,兩個Java文件的內容相似,首先在構造方法中寫了調用了實現GUI的函數,即使用 JFrame類建立窗口,以及加入相應的組件,使用FlowLayout布局,也為按鈕注冊了監聽器。在不同的內部類中寫了不同監聽器所調用的actioPerformed()方法。通過寫一個主類,與一個實現類,主類通過創建實現
40、類的對象來調用其構造方法來實現功能。實現類中包括各種方法與內部類通過方法的層層調用,來實現所需要的結果。2、在服務器中創建ServerSocked對象來接受客戶端的連接請求,并指定端口號,客戶端通過Socket對象與客戶端的Socket對象連接。連接成功后通過IO流來通信,服務器的輸入流是客戶端的輸出流,服務器的輸出流是客戶端的輸入流,通過BufferedReader讀取相應套接字 socket 中獲取的輸入流的內容,并放入對應的文本框中。服務器代碼:import java.awt.*; import java.awt.event.*; import java.util.*; import j
41、ava.io.*; import .*; import javax.swing.*; public class Server public static void main(String args) MyFrame serve = new MyFrame(); serve.setTitle("服務器");serve.setVisible(true); serve.setResizable(false); /設置此窗體是否可由用戶調整大小serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /設置默認關閉操作 class
42、MyFrame extends JFrame JTextField port; JButton start; JTextArea content; JTextField cin; JButton say; Socket socket; MyFrame() init(); StartListen sListen = new StartListen(); SayListen stListen = new SayListen(); start.addActionListener(sListen); /為按鈕 start 注冊一個監聽器say.addActionListener(stListen);
43、/為按鈕 say注冊一個監聽器 void init() setLayout(new FlowLayout(); /設置窗體為流式布局setSize(400,400); setLocation(400,100); add(new JLabel("Port:"); port = new JTextField("8888",25); add(port); start = new JButton("Start"); add(start); content = new JTextArea(15,35); JScrollPane scroll =
44、 new JScrollPane(content); /設置滾動條add(scroll); add(new JLabel("Say:"); cin = new JTextField("Hello!",26); add(cin); say = new JButton("Say"); add(say); class StartListen implements ActionListener public void actionPerformed(ActionEvent e) start.setEnabled(false); try Ser
45、verSocket s = new ServerSocket(Integer.parseInt(port.getText(); / 創建一個服務器套接字對象 s,形參為從 port 文本框中讀取的整型(端口號)socket = s.accept(); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);/ 創建一個打印輸出流對象,其形參為從套接字 socket 對象中獲取的輸出流out.println("Connected&
46、quot;); content.append("Client connected"+"n"); /對兩個字符串進行拼接ServerThread st = new ServerThread(); /創建一個 ServerThread 對象st,并調用其構造方法st.start(); /啟動一個線程,并調用 run()方法 catch (Exception ex) class SayListen implements ActionListener String str; public void actionPerformed(ActionEvent e) t
47、ry PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);/ 創建一個打印輸出流,形參為從套接字socket 中獲取的輸出流str=cin.getText(); if(!str.isEmpty() out.println(new Date()+"n"+str); /打印輸出日期和發送的消息( str)content.append(new Date()+" n me:"+str+"n&q
48、uot;); out.flush(); /清空緩存區cin.setText(""); catch (Exception ex) class ServerThread extends Thread public void run() try BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(); /創建一個緩沖輸出流,其形參為從套接字 socket 中獲取的輸入流String str; while(true) str = in.readLine(); /按行讀取
49、content.append( str+"n"); catch (Exception ex) 客戶端代碼:import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import .*; import javax.swing.*; import ; public class Client public static void main(String args) MyFrame client=new MyFrame(); client.setTitle("客戶端&
50、quot;);client.setVisible(true); client.setResizable(false); /設置此窗體是否可由用戶調整大小client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 設置關閉操作 class MyFrame extends JFrame JTextField ip; JTextField port; JTextField cin; JTextArea content; JButton connect; JButton say; Socket socket; MyFrame() init(); C
51、onnectListen cListener=new ConnectListen(); SayListen sListener = new SayListen(); connect.addActionListener(cListener); /注冊監聽器say.addActionListener(sListener); /注冊監聽器 void init() setLayout(new FlowLayout(); /設置窗體為流式布局setSize(440,500); setLocation(800,100); add(new JLabel("Server:ip"); ip=new JTextField("127.0.0.1",8); add(ip); add(new JLabel("Server:port"); port=new JTextField("8888",8); add(port); connect=new JButton("connect"); add(connect); content=new JTextArea(16,35); JScrollPane scroll=new JScrollPane(content); /設置滾動條add(scroll); add(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025戰略管理與合同關系優化
- 2025商務英語考試:商務合同英譯關鍵注意問題
- 2025租賃合同與銷售合同
- 2025標準煤炭購銷合同
- 2025《商務樓租賃合同》范本
- 2025合同解除與合同終止的區別
- 2025餐飲連鎖店的用工合同范本
- 2025銅產品購銷合同范本
- 2025年:透視租賃合同中的當事人權益保障
- 2025有關企業對個人借款合同范文
- 自身免疫性腦炎
- 醫院質控科工作質量考核指標
- CRPS電源設計向導 CRPS Design Guide r-2017
- GB/T 9345.1-2008塑料灰分的測定第1部分:通用方法
- GB/T 4937.22-2018半導體器件機械和氣候試驗方法第22部分:鍵合強度
- GB/T 3452.2-2007液壓氣動用O形橡膠密封圈第2部分:外觀質量檢驗規范
- 煤礦從業人員安全培訓考試題庫(附答案)
- 第十章-國際政治與世界格局-(《政治學概論》課件)
- 2023年法律職業資格考試歷年真題精選合集
- 濾毒罐使用說明書
- 如何上好一節思政課綜述課件
評論
0/150
提交評論