标签:
对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结。
1 import java.awt.*; 2 3 public class ChatClient extends Frame{//你创建的类继承了Frame 4 5 public static void main(String[] args) { 6 new ChatClient().launchFrame();//通过new实例化创建一个对象 7 } 8 9 public void launchFrame(){//设置聊天框的大小参数 10 setLocation(400,300); 11 setSize(300,300); 12 setVisible(true);//设置为可见 13 } 14 }
这是运行之后出现的一个雏形聊天框:
2. 第二步,调整聊天框的大小,并且往框架中添加控件。下面是代码:
1 import java.awt.*; 2 3 public class ChatClient extends Frame{ 4 //实例化创建对象 5 TextField tfTxt = new TextField(); 6 TextArea taContent = new TextArea(); 7 8 public static void main(String[] args) { 9 new ChatClient().launchFrame(); 10 } 11 12 public void launchFrame(){ 13 setLocation(400,300); 14 setSize(300,300); 15 //往框架中添加控件,Frame默认的布局是BorderLayout 16 add(tfTxt,BorderLayout.SOUTH); 17 add(taContent,BorderLayout.NORTH); 18 this.pack(); 19 20 21 setVisible(true); 22 } 23 }
这是运行之后的效果:
3.添加事件感应,可以往文本框中输入文字
1 import java.awt.*; 2 import java.awt.event.*; 3 4 public class ChatClient extends Frame { 5 6 // 添加文本域事件感应,三种方法:外部并行类,内部类,局部匿名类 7 TextField tfTxt = new TextField(); 8 TextArea taContent = new TextArea(); 9 10 public static void main(String[] args) { 11 new ChatClient().launchFrame();//通过new实例化创建一个对象 12 } 13 14 public void launchFrame() { 15 setLocation(400, 300); 16 setSize(300, 300); 17 // 往框架中添加控件 18 add(tfTxt, BorderLayout.SOUTH); 19 add(taContent, BorderLayout.NORTH); 20 this.pack();//打包 21 //给当前对象添加一个窗口监听事件 22 this.addWindowListener(new WindowAdapter(){ 23 public void windowClosing(WindowEvent e){ 24 System.exit(0); 25 } 26 }); 27 tfTxt.addActionListener(new TfListener());//给文本域添加一个事件监听 28 setVisible(true); 29 } 30 31 private class TfListener implements ActionListener{ 32 public void actionPerformed(ActionEvent e){ 33 String s = tfTxt.getText().trim(); 34 35 } 36 } 37 }
运行之后的效果:
4.添加客户端,通过socket链接客户端和服务器。
import java.io.IOException; import java.net.*; public class ChatServer { //添加服务端 public static void main(String[] args) { try( ServerSocket ss = new ServerSocket(8888);//通过socket链接客户端和服务器端 ){ while (true){ Socket s = ss.accept(); System.out.println( "a client connected!!" ); } }catch(Exception e){ e.printStackTrace(); } } }
5.第五步,链接服务器。
import java.awt.*; import java.awt.event.*; import java.io.IOException; import java.net.*; public class ChatClient extends Frame { // 添加文本域事件感应,三种方法:外部并行类,内部类,局部匿名类 TextField tfTxt = new TextField(); TextArea taContent = new TextArea(); public static void main(String[] args) { new ChatClient().launchFrame(); } public void launchFrame() { setLocation(400, 300); setSize(300, 300); // 往框架中添加控件 add(tfTxt, BorderLayout.SOUTH); add(taContent, BorderLayout.NORTH); this.pack(); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); tfTxt.addActionListener(new TfListener()); setVisible(true); connect(); } //链接服务器方法 public void connect(){ try( Socket s = new Socket("127.0.0.1", 8888);//端口号必须一致 ){ System.out.println( "Connected sucsess" ); }catch(IOException e){ e.printStackTrace(); } } private class TfListener implements ActionListener{ public void actionPerformed(ActionEvent e){ String s = tfTxt.getText().trim(); } } }
先写到这里,有什么不对的地方,请大神敬请指教!
标签:
原文地址:http://www.cnblogs.com/jinshuai/p/4709564.html