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

}

}

}

}

java聊天文件,java聊天小程序 (一个接口两个java文件)之一相关推荐

  1. 文件分享微信小程序的设计与开发 Java开发微信小程序 毕业设计

    目录 使用的技术 2.功能介绍 3.此小程序未部署 所以体验不了 4.如何联系我或需要源码进行联系 使用的技术 Springboot+Mybatis+Mysql+ 微信小程序+Mpvue 1.小程序展 ...

  2. 微信小程序 服务器地址统一配置,微信小程序实现接口地址统一配置 文件config...

    在项目开发中我们常常会进行业务接口对接的操作.经常需要在本地接口地址.测试服务器接口地址到最后的正式的接口地址间来回更换调试推进项目上线.如果去每个页面单独修改,很明显是不现实的.不仅会大大增加工作量 ...

  3. 微信小程序实现接口地址统一配置 文件config

    在项目开发中我们常常会进行业务接口对接的操作.经常需要在本地接口地址.测试服务器接口地址到最后的正式的接口地址间来回更换调试推进项目上线.如果去每个页面单独修改,很明显是不现实的.不仅会大大增加工作量 ...

  4. 计算机网络 文件传输小程序代码,懒得打开电脑传文件?这四类小程序把这事解决了...

    生命在于静止,主持人吴昕这句火爆的口头禅,诠释了当代人对于"懒"的追求. 懒得出门吃饭,有外卖:懒得下载应用,有小程序... 在办公场景下,更是要"懒"到底,不 ...

  5. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台

    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...

  6. 基于Java后台(Springboot框架)+前端小程序(MINA框架)+Mysql数据库的教室图书馆座位预约小程序系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序预约订座小程序,前台用户使用小程序,后台管理使用Java+Mysql开发,后台使用了springboot框架:通过后台添加座位类型 ...

  7. 基于Java后台(Springboot框架)+前端小程序(MINA框架)+Mysql数据库的影视评论交流小程序系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序影视评论交流系统,前台用户使用小程序,后台管理使用Java+Mysql开发,后台使用了springboot框架:通过后台设置影视属 ...

  8. 基于Java后台(Springboot框架)+前端小程序(MINA框架)+Mysql数据库的菜谱美食小程序系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序美食菜谱点评系统,前台用户使用小程序,后台管理使用Java+Mysql开发,后台使用了springboot框架:通过后台添加资讯和 ...

  9. 基于Java后台(Springboot框架)+前端小程序(MINA框架)+Mysql数据库的旅游景区景点购票小程序系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序景区景点预约购票系统,前台用户使用小程序,后台管理使用Java+Mysql开发,后台使用了springboot框架:通过后台添加景 ...

最新文章

  1. 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...
  2. 使用高精度旋转编码器BH60测量步进电机转动角度
  3. JDK8的JVM优化实操及部分原理加深理解
  4. 提供做某事Do you want me to..._45
  5. hashmap头插法和尾插法区别_Java程序员必知:HashMap进行put操作会不会引起死循
  6. 送出15个Google Wave邀请,需要的赶快
  7. Unable to process Jar entry
  8. 如何鉴定光缆质量好坏?
  9. word文件转换成PDF文件
  10. 按颜色分类:蓝紫色系(Purple Blue)
  11. cad动态块制作翻转_cad动态块制作教程
  12. java 杨辉三角_JAVA实现杨辉三角的三种方式
  13. 软件测试用例设计时的颗粒度
  14. 第22节 NAT——实现公私有IP地址转换
  15. Ip可视一键对讲机特点
  16. 高斯消元法(高斯·约当消元法)(整数)
  17. 水质在线监测系统方案
  18. 维吉尼亚密码的破解算法及python代码实现
  19. Hive Later View用法
  20. Java整合jcef

热门文章

  1. vue的插值语法及el和data、methods语法释义
  2. go导入私有仓库中的包配置方法
  3. istio安装命令整理
  4. linux编译安装ansible 2.9.22
  5. 【收藏】CentOS 7 安装NFS
  6. Spark on K8S 的最佳实践和需要注意的坑
  7. Spark分区与并行度
  8. centos7.x 升级svn版本到指定版本(1.10)
  9. Go的GAPATH详解
  10. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(三)