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 相关文章推荐
Springboot如何使用logback实现多环境配置?
Jun 16 Java/Android
SpringCloud的JPA连接PostgreSql的教程
Jun 26 Java/Android
JavaWeb 入门篇(3)ServletContext 详解 具体应用
Jul 16 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
springboot 多数据源配置不生效遇到的坑及解决
Nov 17 Java/Android
解析探秘fescar分布式事务实现原理
Feb 28 Java/Android
带你了解Java中的ForkJoin
Apr 28 Java/Android
Java实现扫雷游戏详细代码讲解
May 25 Java/Android
Java实现字符串转为驼峰格式的方法详解
Jul 07 Java/Android
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
Aug 05 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 db类库进行数据库操作
2009/03/19 PHP
phplot生成图片类用法详解
2015/01/06 PHP
php获取系统变量方法小结
2015/05/29 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
Python脚本实现下载合并SAE日志
2015/02/10 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python装饰器用法实例总结
2018/02/07 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
PHP如何设置和取得Cookie值
2015/06/30 面试题
面向对象概念面试题(.NET)
2016/11/04 面试题
工商管理专业自荐信
2014/06/03 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
陕西导游词
2015/02/04 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
2015年度女工工作总结
2015/10/22 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL