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 相关文章推荐
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
详解JAVA的控制语句
Nov 11 Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
Jan 18 Java/Android
Java生成日期时间存入Mysql数据库的实现方法
Mar 03 Java/Android
Spring Boot项目传参校验的最佳实践指南
Apr 05 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Java 写一个简单的图书管理系统
Apr 26 Java/Android
Spring中的@Transactional的工作原理
Jun 05 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 Java/Android
Spring Boot 的创建和运行示例代码详解
Jul 23 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 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
Django异步任务线程池实现原理
2019/12/17 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
白酒市场营销方案
2014/02/25 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
开国大典观后感
2015/06/04 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python