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

 更新时间:2022-06-11 07:28:44   作者:佚名   我要评论(0)

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

本文实例为大家分享了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和WebSocket实现网页聊天室实例代码
  • java聊天室的实现代码
  • java socket实现聊天室 java实现多人聊天功能
  • java实现自动回复聊天机器人
  • 基于Java Socket实现一个简易在线聊天功能(一)
  • Java基于socket实现简易聊天室实例
  • java Socket实现网页版在线聊天
  • java中UDP简单聊天程序实例代码
  • java实现一个简单TCPSocket聊天室功能分享
  • 基于java编写局域网多人聊天室

相关文章

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

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

    本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 ServerDemo01.java import javax.swing.*; import
    2022-06-11
  • openEuler?搭建java开发环境的详细过程

    openEuler?搭建java开发环境的详细过程

    目录1. 初始化环境2. 安装jdk83. 安装SVN4. 安装Git5. 安装Node.js6. 下载并激活IntelliJ IDEA7. 下载并激活Navicat本文操作系统及版本号:&
    2022-06-11
  • Android开发手册Chip监听及ChipGroup监听

    Android开发手册Chip监听及ChipGroup监听

    目录??Chip监听??ChipGroup监听??实例效果展示??Chip监听 选中状态的监听:setOnCheckedChangeListener,该监听只有设置了checkable 属性为t
    2022-06-11
  • Android开发EditText禁止输入监听及InputFilter字符过滤

    Android开发EditText禁止输入监听及InputFilter字符过滤

    目录??监听事件??InputFilter??监听事件 setOnEditorActionListener:软键盘回车监听事件 testEditText.setOnEditorActionListener(new Tex
    2022-06-11
  • 解决spring.thymeleaf.cache=false不起作用的问题

    解决spring.thymeleaf.cache=false不起作用的问题

    目录spring.thymeleaf.cache=false不起作用thymeleaf缓存关闭spring.thymeleaf.cache=false不起作用 配置是清除缓存,实现热部署。 也就是修
    2022-06-11
  • 深入理解pytorch库的dockerfile

    深入理解pytorch库的dockerfile

    目录0. dockerfile命令1. 使用指令的注意点3. 参考4. 存在的问题0. dockerfile命令 FROM # 基础镜像,一切从这里开始构建 MAINTAINER #
    2022-06-11
  • Java实现简单小画板

    Java实现简单小画板

    Java制作简单画板,包括两个类,一个主要画板类Drawpad,一个画板监听器DrawListener类。 1、Drawpad类,包括画板,画板功能设计,保存图片等
    2022-06-11
  • Spring?Boot项目如何优雅实现Excel导入与导出功能

    Spring?Boot项目如何优雅实现Excel导入与导出功能

    目录背景EasyExcel 问题分析与解决Spring Boot Excel 导入与导出依赖引入Excel 导入基本导入功能进阶导入功能Excel 导出Excel 导入参数校验开
    2022-06-11
  • Django框架之路由用法

    Django框架之路由用法

    简介 路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系。 Djang
    2022-06-11
  • java实现面板之间切换功能

    java实现面板之间切换功能

    本文实例为大家分享了java实现面板之间切换的具体代码,供大家参考,具体内容如下 如图: 关键技术:事件监听,设置显示面板,重新刷新验证
    2022-06-11

最新评论