Java实现带图形界面的聊天程序


Posted in Java/Android onJune 10, 2022

本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下

ServerDemo01.java

import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo01 implements ActionListener {
    private ServerSocket serverSocket;
    private Socket socket;
    private DataInputStream dataInputStream;
    private DataOutputStream dataOutputStream;
    private JFrame jFrame;
    private JScrollPane jScrollPane;
    private JTextArea jTextArea;
    private JPanel jPanel;
    private JTextField jTextField;
    private JButton jButton;

    public ServerDemo01() {
        //创建组件
        jFrame = new JFrame("服务器");
        jTextArea = new JTextArea();
        jScrollPane = new JScrollPane(jTextArea);
        jPanel = new JPanel();
        jTextField = new JTextField(20);
        jButton = new JButton("发送");
        //添加组件到容器
        jFrame.add(jScrollPane, BorderLayout.CENTER);
        jFrame.add(jPanel, BorderLayout.SOUTH);
        jPanel.add(jTextField);
        jPanel.add(jButton);
        //设置窗体
        jFrame.setBounds(200,200,400,300);
        jFrame.setVisible(true);
        jFrame.setResizable(false);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //添加监听
        jButton.addActionListener(this);
        //TCP网络通信
        try {
            serverSocket = new ServerSocket(9999);
            socket = serverSocket.accept();//等待连接
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream = new DataOutputStream(socket.getOutputStream());

            while(true) {//接收来自客户端的消息
                String strClient = dataInputStream.readUTF();
                jTextArea.append("客户端:" + strClient + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        //监听发送按钮
        if(e.getSource()==jButton){
            String str = jTextField.getText();//获取文本框中的内容
            if(str.length()==0)//发送内容为空
                JOptionPane.showMessageDialog(jTextField,"发送内容不能为空");
            else{
                //将数据发送到客户端
                try {
                    dataOutputStream.writeUTF(str);
                    jTextArea.append("服务器:"+str + "\n");
                    jTextField.setText("");
                } catch (IOException ioException) {
                    ioException.printStackTrace();
                }
            }

        }
    }

    public static void main(String[] args) {
        new ServerDemo01();
    }
}

ClientDemo01.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

public class ClientDemo01 implements ActionListener {
    private Socket socket;
    private DataInputStream dataInputStream;
    private DataOutputStream dataOutputStream;
    private JFrame jFrame;
    private JScrollPane jScrollPane;
    private JTextArea jTextArea;
    private JPanel jPanel;
    private JTextField jTextField;
    private JButton jButton;

    public ClientDemo01() {
        //创建组件
        jFrame = new JFrame("客户端");
        jTextArea = new JTextArea();
        jScrollPane = new JScrollPane(jTextArea);
        jPanel = new JPanel();
        jTextField = new JTextField(20);
        jButton = new JButton("发送");
        //添加组件
        jFrame.add(jScrollPane, BorderLayout.CENTER);
        jFrame.add(jPanel,BorderLayout.SOUTH);
        jPanel.add(jTextField);
        jPanel.add(jButton);
        //设置窗体
        jFrame.setBounds(610,200,400,300);
        jFrame.setVisible(true);
        jFrame.setResizable(false);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //添加监听
        jButton.addActionListener(this);
        //TCP网络通信
        try {
            socket = new Socket("127.0.0.1",9999);
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream = new DataOutputStream(socket.getOutputStream());

            //接收服务器的消息
            while (true) {
                String strServer = dataInputStream.readUTF();
                jTextArea.append("服务器:"+strServer + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==jButton){
            String str = jTextField.getText();
            if(str.length()==0)
                JOptionPane.showMessageDialog(jTextField,"发送内容不能为空");
            else{
                try {
                    dataOutputStream.writeUTF(str);
                    jTextArea.append("客户端:"+str + "\n");
                    jTextField.setText("");
                } catch (IOException ioException) {
                    ioException.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        new ClientDemo01();
    }
}

运行截图:

Java实现带图形界面的聊天程序

Java实现带图形界面的聊天程序

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Java/Android 相关文章推荐
Java用自带的Image IO给图片添加水印
Jun 15 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
Dec 06 Java/Android
springboot新建项目pom.xml文件第一行报错的解决
Jan 18 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
Android存储中最基本的文件存储方式
Apr 30 Java/Android
springcloud整合seata
May 20 Java/Android
Android Canvas绘制文字横纵向对齐
Jun 05 Java/Android
Java实现简单小画板
Jun 10 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
Jun 21 Java/Android
Spring Cloud OpenFeign模版化客户端
Jun 25 Java/Android
Spring中bean集合注入的方法详解
Jul 07 Java/Android
Android中View.post和Handler.post的关系
Android Canvas绘制文字横纵向对齐
Jun 05 #Java/Android
Android 中的类文件和类加载器详情
Android中的Launch Mode详情
Spring中的@Transactional的工作原理
Jun 05 #Java/Android
Qt数据库应用之实现图片转pdf
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 #Java/Android
You might like
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
php swoft框架实例用法
2020/12/22 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
python中__call__方法示例分析
2014/10/11 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python实现ip代理池功能示例
2019/07/05 Python
python生成随机红包的实例写法
2019/09/02 Python
python多进程使用函数封装实例
2020/05/02 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
大班幼儿评语大全
2014/04/30 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
女方离婚起诉书
2015/05/18 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL