文档库

最新最全的文档下载
当前位置:文档库 > Chat

Chat

/**


*/

package tcpip;

import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import http://www.wendangku.net/doc/d94f9448be1e650e52ea9953.html .*;
import java.util.Calendar;
import java.io.*;
/**
* 此类通过UDP实现聊天功能。

* 学校局域网内只能ping通网关和本机地址,对于局域网内其他主机ping不通。

* 本次实验时用一根网线直接连通两台笔记本电脑,可以互相ping通。

* 两台主机地址分别为:169.254.105.44和169.254.116.48

*

* 注:菜单栏中除了退出,其他菜单并没有实质性的作用。

* */
public class Chat extends JFrame{

private static final long serialVersionUID = 1L;

//定义的组件
Container c = this.getContentPane();
TimeLabel timeLab;
Recv recvMsg;
JTextField sendMsg;
JButton sendBut;
JDialog helpDia;
JLabel helpLab;

DatagramSocket ds ;

//菜单栏
JMenuBar menuBar ;
JMenu operate ;
JMenuItem option ;
JMenu hehe ;
JMenu xixi;
JMenuItem heihei;

JMenu help;
JMenu info;
JMenuItem infomation;
JMenuItem about;

/**
* 此构造方法调用init()函数

* */
public Chat(){
init();
}
/**
* 用于初始化各组件

* */
public void init(){
this.setLayout(new BorderLayout());
this.setBounds(300, 100, 600, 500);
this.setTitle("LAN Chat");
try {
ds = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}

//初始化菜单栏
menuBar = new JMenuBar();
operate = new JMenu("operate");
option = new JMenuItem("quit");
hehe = new JMenu("hehe");
xixi = new JMenu("xixi");
heihei = new JMenuItem("heihei");
xixi.add(heihei);
hehe.add(xixi);
operate.add(hehe);
operate.add(option);
help = new JMenu("help");
info = new JMenu("info");
infomation = new JMenuItem("infomation");
info.add(infomation);
about = new JMenuItem("about");
help.add(info);
help.add(about);
menuBar.add(operate);
menuBar.add(help);
this.setJMenuBar(menuBar);


//初始化显示时间Lable
timeLab = new TimeLabel();
Thread timeThread = new Thread(timeLab);
timeThread.start();
timeLab.setHorizontalAlignment(SwingConstants.RIGHT);
c.add(timeLab,"North");

//用于接收数据的文本框并设置滚动条
//文本框设置滚动条应将文本框作为参数传给滚动条
//最后将滚动条组件添加到容器中!!而不是将文本框组件添加到容器中
recvMsg = new Recv();
JScrollPane jsp = new JScrollPane(recvMsg);
c.add(jsp);
recvMsg.setEditable(false);
Thread recvThread = new Thread(recvMsg);
recvThread.start();
//c.add(recvMsg,"Center");

//添加一个面板,用于封装输入框和按钮
JPanel panel = new JPanel();
panel.setLayout(new FlowLayo

Chat

(共3页)