这篇文章主要为大家详细介绍了Java实现带图形界面的聊天程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Java实现带图形界面聊天程序的具体代码,供大家参考,具体内容如下
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实现带图形界面的聊天程序
基础教程推荐
猜你喜欢
- springboot下使用shiro自定义filter的个人经验分享 2024-02-27
- 使用Java和WebSocket实现网页聊天室实例代码 2024-02-25
- JavaWeb 实现验证码功能(demo) 2024-04-14
- 运用El表达式截取字符串/获取list的长度实例 2023-08-01
- Java中EnvironmentAware 接口的作用 2023-01-23
- JSP 动态树的实现 2023-12-17
- Java+mysql实现学籍管理系统 2023-03-16
- 是否适合从javabean类更新数据库? 2023-11-04
- Java编写实现窗体程序显示日历 2023-01-02
- 深入理解约瑟夫环的数学优化方法 2024-03-07
