75行Java Redis实时聊天室 还带界面!

直接上图!
在这里插入图片描述
用的是Redis的订阅功能
上代码!

package com.qukin.chatroom;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
import javax.swing.*;
import javax.swing.text.DefaultCaret;
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Main extends JedisPubSub {
    private static final String channel="chatroom";     // redis中的list数据结构名称和redis订阅名称
    private static final JTextArea area = new JTextArea();
    private static final JTextField text = new JTextField();
    private static final JButton send=new JButton("发送");
    private static final JScrollPane pane=new JScrollPane();
    private static final JLabel label=new JLabel("姓名:");
    private static final JTextField name=new JTextField();
    private static boolean TF=false;
    static List<String> list = new ArrayList<>();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public Main() {
        send.addActionListener(e -> {
            if (text.getText().trim().equals("") || name.getText().trim().equals("")){
                JOptionPane.showMessageDialog(null,"姓名或输入框禁止为空");
            }else{
                TF=true;
                Jedis jedis = new Jedis("localhost");
                jedis.publish(channel, text.getText());
                jedis.lpush(channel, "Time:" + df.format(new Date()) + ", Name:"+name.getText()+" , Message:" + text.getText());
                text.setText("");
            }
        });
    }
    @Override
    public void onMessage(String channel, String message) {
        if (TF) {
            list.add("\t" + df.format(new Date()) + "\n" + name.getText() + ": " + message);
            TF=false;
        }else
            list.add("\t" + df.format(new Date()) + "\n" + "匿名用户: " + message);
        area.setText("");
        for (String s : list)
            area.append(s + "\n");
    }
    public static void main(String[] args) {
        JFrame frame=new JFrame("匿名聊天室");
        frame.setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,300);
        frame.setResizable(false);
        frame.setVisible(true);
        label.setBounds(10,220,40,30);
        frame.add(label);
        name.setText("QuKin");
        name.setBounds(50,220,80,30);
        frame.add(name);
        send.setBounds(290,220,80,30);
        frame.add(send);
        text.setBounds(140, 220, 140, 30);
        frame.add(text);
        pane.setBounds(10, 10, 360, 200);
        area.setEditable(false);
        pane.setViewportView(area);
        frame.add(pane);
        Font f=area.getFont();
        area.setFont(new Font(f.getFamily(),f.getStyle(),f.getSize()+2));
        DefaultCaret caret = (DefaultCaret)area.getCaret();
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
        Jedis jedis = new Jedis("localhost");
        Main main=new Main();
        jedis.subscribe(main, channel);
    }
}

应该够简介明了吧
如果大哥有币,请打赏吧!如果没有点个赞收个藏分个享也行啊

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值