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实现二维数组和稀疏数组之间的转换
Jun 27 Java/Android
Java基础之详解HashSet的使用方法
Jun 30 Java/Android
Java使用httpRequest+Jsoup爬取红蓝球号码
Jul 02 Java/Android
alibaba seata服务端具体实现
Feb 24 Java/Android
SpringBoot中HttpSessionListener的简单使用方式
Mar 17 Java/Android
springboot 自定义配置 解决Boolean属性不生效
Mar 18 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
JavaWeb Servlet开发注册页面实例
Apr 11 Java/Android
Android开发之底部导航栏的快速实现
Apr 28 Java/Android
SpringBoot深入分析讲解监听器模式下
Jul 15 Java/Android
SpringBoot Http远程调用的方法
Aug 14 Java/Android
Mybatis 一级缓存和二级缓存原理区别
Sep 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命令行写shell实例详解
2018/07/19 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
var与Javascript变量隐式声明
2009/09/17 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
用Python写的图片蜘蛛人代码
2012/08/27 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python ldap实现登录实例代码
2016/09/30 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
python实现函数极小值
2019/07/10 Python
Python 求数组局部最大值的实例
2019/11/26 Python
Python多线程正确用法实例解析
2020/05/30 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
幼儿园开学寄语
2014/04/03 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
辞职信格式范文
2015/05/13 职场文书
董事会决议范本
2015/07/01 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python