码迷,mamicode.com
首页 > 其他好文 > 详细

一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目

时间:2015-08-09 01:53:35      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结。

  1. 首先,你要先创建一个客户端聊天框(取名为:ChatClient,它是你创建的类),这个类继承了Frame。而这个Frame是java.awt里的一个子类,它是带有标题和边框的顶层窗口,它里面有很多方法(具体查手册)。下面是一段示例代码:

  

 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();
            
        }
    }
}

  

先写到这里,有什么不对的地方,请大神敬请指教!

 

 

一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目

标签:

原文地址:http://www.cnblogs.com/jinshuai/p/4709564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!