java聊天文件,java聊天小程序 (一个接口两个java文件)之一
interface MyValue {/*--------------------------------------定义常用变量接口---------------------------------------*/
int WEIGHT1 = 20;
int WEIGHT2 = 10;
int WEIGHT3 = 30;
int HEIGHT1 = 30;
int LOCATION = 200;
int ININWEIGHT = 200;
String s1 = "发送";
String s2 = "消息:";
String s3 = "Wayne";
String s4 = "文件";
String s5 = "保存聊天信息";
String s6= "读取聊天信息";
String s7="对方IP";
String s8="帮助";
String s9="帮助文档";
String s10="编辑";
String s11="删除记录";
String s12="查找记录";
String s13="传文件";
String s14="关闭";
String s15="Connect";
String user="对方";
String s16="Port";
String s17="共可输入20个字符";
String ip="127.0.0.1";
int INITHEIGHT = 200;
}
/*========================================核心程序================================================*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.util.zip.*;
public class TalkProgram extends Frame implements MyValue{
private Button b1 = null;
private Button b2 = null;
private Button b3 = null;
private Button b4 = null;
private TextField t1 = null;
private TextField t2 = null;
private TextField t3 = null;
private TextArea ta1 = null;
private Panel p1 = null;
private Panel p2 = null;
private Label l1 = null;
private Label l2 = null;
private Label l3 = null;
private Label l4 = null;
public DatagramSocket socket=null;//声明datagramsocket套接字,随机绑定一个有效的端口;
int SERVERPORT=8080;//默认端口为:8080
public static String serverIP="127.0.0.1";//默认为本机
public static int PORT;//对话框输入对方的服务器的端口号
public String port1;//自己方服务器的端口
public TalkProgram()
{//构造函数
super(s3);
/*------------------------ 初始化所有需要的部件------------------------------------*/
t1 = new TextField("", WEIGHT1);
t2 = new TextField("", WEIGHT3);
t1.addKeyListener(new stringlLeft());
t3 = new TextField("", WEIGHT2/2);
ta1 = new TextArea(WEIGHT2, HEIGHT1);
b1 = new Button(s1);
b2=new Button(s13);
b2.addActionListener(new send());
b3=new Button(s14);
b4=new Button(s15);
b4.addActionListener(new connect());
p1 = new Panel();
p2 = new Panel();
l1 = new Label(s2);
l2 = new Label(s7);
l3 = new Label(s16);
l4 = new Label(s17);
p1.setLayout(new FlowLayout());
p1.add(l1);
p1.add(t1);
p1.add(l4);
p1.add(b1);
b1.addActionListener(new SendMessage ());
p1.add(b2);
p1.add(b3);
b3.addActionListener(new closeConnect());
p2.setLayout(new FlowLayout());
p2.add(l3);
p2.add(t3);
p2.add(l2);
p2.add(t2);
p2.add(b4);
/*------------------------------下面是关于菜单部分-------------------------------------*/
MenuBar mb = new MenuBar();
Menu m1 = new Menu(s4);
Menu m2= new Menu(s10);
Menu m3 = new Menu(s8);
MenuItem mi1 = new MenuItem(s5,new MenuShortcut(KeyEvent.VK_S));
MenuItem mi2 = new MenuItem(s6,new MenuShortcut(KeyEvent.VK_O));
MenuItem mi3 = new MenuItem(s11,new MenuShortcut(KeyEvent.VK_X));
MenuItem mi4 = new MenuItem(s9,new MenuShortcut(KeyEvent.VK_H));
MenuItem mi5 = new MenuItem(s12,new MenuShortcut(KeyEvent.VK_F));
m1.add(mi1);
m1.addSeparator();
m1.add(mi2);
m2.add(mi3);
m2.addSeparator();
m2.add(mi5);
m3.add(mi4);
mi1.addActionListener(new SaveMenuItem());
mi2.addActionListener(new ReadMenuItem());
mi3.addActionListener(new deleteContent());
mi4.addActionListener(new showHelp());
mb.add(m1);
mb.add(m2);
mb.add(m3);
port1 = JOptionPane.showInputDialog(null,"服务器端口","端口号:" + "",JOptionPane.QUESTION_MESSAGE);
System.out.println("server port is "+port1);
SERVERPORT=getPort(port1);
System.out.println("server port is "+SERVERPORT);
this.setMenuBar(mb);
/* -------------------------组合各个部件和相互的关系----------------------------*/
this.setLayout(new BorderLayout(5, 5));
this.add(p2,BorderLayout.NORTH);
this.add(ta1, BorderLayout.CENTER);
this.add(p1, BorderLayout.SOUTH);
this.pack();//简单整理一下部件布局
this.setLocation(LOCATION, LOCATION);
this.setVisible(true);
/*----------------------------关闭窗口------------------------------------------------*/
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
/* -------------------------------------------启动server监听端口是否有人连接----------- -----------------------------------------*/
receiveMessage waitMessage=new receiveMessage();//启动server线程监听是否有人连接
Thread td1=new Thread(waitMessage);
td1.start();
receiveFile waitFile=new receiveFile();
Thread td2=new Thread(waitFile);
td2.start();
}//构造函数结束
public String getIP()
{
String ip=t2.getText();
return ip;
}
public int getPort(String s)
{
if(s!="")
{
int s1=Integer.parseInt(s);
return s1;
}else return SERVERPORT;
}
/*-----------------------------delete chat content-----------------------------------------------------*/
class deleteContent implements ActionListener{
public void actionPerformed(ActionEvent e){
ta1.setText(null);
}
}
/*--------------------------------------显示帮助文档--------------------------------------------------*/
class showHelp implements ActionListener{
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"该作品制作人:王宁\n学号:05301052\n\n感谢大家对本产品的支持!");
}
}
/*-----------------save chat content-----------------------------*/
class SaveMenuItem implements ActionListener{//save chat message
public void actionPerformed(ActionEvent e)//保存信息
{
FileOutputStream out;
PrintStream p; //声明一个Print Stream流
try {
out = new FileOutputStream("chatlog.txt",true);
p = new PrintStream( out );
p.println (ta1.getText());//方法println(),它将一个字符串发送给输出流。
p.close();
} catch (Exception e1) {
System.err.println ("Error writing to file");
}
}
}
/*-------------------read chat content--------------------------*/
class ReadMenuItem implements ActionListener{//read chat message
public void actionPerformed(ActionEvent e){//读取信息
//定义一个byte数组用于接收从文件中读出的字节,注意它的长度为1024
byte[] buff = new byte[1024];
int n;
FileInputStream fis = null;
// 生成对象infile 准备读取文件
try
{
File f=new File("chatlog.txt");
fis=new FileInputStream(f);
// 从文件读取数据
while((n = fis.read(buff,0,1024))!=-1)
{
String s=new String(buff,0,n);
ta1.append(s);
fis.close();
}
}
catch (FileNotFoundException e1)
{
System.out.println("没有找到文件");
System.exit(1);
}
catch (IOException e2)
{
System.out.println("");
}
//清理
finally
{
try
{
fis.close();
}
catch (IOException e3)
{
System.out.println("文件错误");
System.exit(1);
}
}
}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
