首页 > 其他分享 >11月24日

11月24日

时间:2023-11-24 21:33:05浏览次数:28  
标签:11 24 String chatArea void new message public

在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:

1. 新的具体聊天室中发送的图片大小不得超过20M。

2. 新的具体聊天室中发送的文字长度不得超过100个字符。

3. 新的具体会员类可以发送图片信息和文本信息。

4. 新的具体会员类在发送文本信息时,可以在信息后加上时间。

修改客户端测试类,注意原有系统类代码和客户端代码的修改。

实验要求:

1. 提交源代码;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

 

class NewChatRoom {

    private ArrayList<String> messages = new ArrayList<>();

    private JTextArea chatArea;

 

    public NewChatRoom(JTextArea chatArea) {

        this.chatArea = chatArea;

    }

 

    public void sendTextMessage(NewMember member, String text) {

        if (text.length() <= 100) {

            String message = member.getName() + ": " + text;

            messages.add(message);

            displayMessage(message);

        } else {

            System.out.println("Text message exceeds 100 characters. Not sent.");

        }

    }

 

    public void sendImage(NewMember member, int imageSize) {

        if (imageSize <= 20) {

            String message = member.getName() + " sent an image.";

            messages.add(message);

            displayMessage(message);

        } else {

            System.out.println("Image size exceeds 20M. Not sent.");

        }

    }

 

    private void displayMessage(String message) {

        chatArea.append(message + "\n");

    }

}

 

class NewMember {

    private String name;

 

    public NewMember(String name) {

        this.name = name;

    }

 

    public String getName() {

        return name;

    }

 

    public void sendTextMessage(NewChatRoom chatRoom, String text) {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String currentTime = dateFormat.format(new Date());

 

        String formattedText = text + " - " + currentTime;

        chatRoom.sendTextMessage(this, formattedText);

    }

 

    public void sendImage(NewChatRoom chatRoom, int imageSize) {

        chatRoom.sendImage(this, imageSize);

    }

}

 

public class ChatGUI extends JFrame {

    private NewChatRoom chatRoom;

    private JTextField messageField;

 

    public ChatGUI() {

        setTitle("Simple Chat Room");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLayout(new BorderLayout());

 

        JTextArea chatArea = new JTextArea();

        chatArea.setEditable(false);

        JScrollPane scrollPane = new JScrollPane(chatArea);

        add(scrollPane, BorderLayout.CENTER);

 

        JPanel bottomPanel = new JPanel();

        bottomPanel.setLayout(new BorderLayout());

 

        messageField = new JTextField();

        bottomPanel.add(messageField, BorderLayout.CENTER);

 

        JButton sendButton = new JButton("Send");

        sendButton.addActionListener(new ActionListener() {

            @Override

            public void actionPerformed(ActionEvent e) {

                sendMessage();

            }

        });

        bottomPanel.add(sendButton, BorderLayout.EAST);

 

        add(bottomPanel, BorderLayout.SOUTH);

 

        chatRoom = new NewChatRoom(chatArea);

 

        setSize(400, 300);

        setVisible(true);

    }

 

    private void sendMessage() {

        String message = messageField.getText().trim();

        if (!message.isEmpty()) {

            NewMember member = new NewMember("User");

            member.sendTextMessage(chatRoom, message);

            messageField.setText("");

        }

    }

 

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override

            public void run() {

                new ChatGUI();

            }

        });

    }

}

 

标签:11,24,String,chatArea,void,new,message,public
From: https://www.cnblogs.com/fupeisen/p/17854811.html

相关文章

  • 2023.11.24——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.JavaGUI2.会话跟踪技术明日计划:学习......
  • 20231124
    /*time:O(unknown)space:O(n*n)knowledge:树的直径step:dfs*2*/#include<bits/stdc++.h>usingnamespacestd;intn;vector<int>t[105];boolvis[105];ints,len;voiddfs(intx,intd){vis[x]=true;if(len<d){s=x;len......
  • 学习笔记11
    20211301学习笔记11教材知识点总结TCP/IP协议TCP:代表传输控制协议IP:代表互联网协议IPv4:32位IPv6:64位堆栈顶层:应用程序,用于登录远程主机ssh、用于交换电子邮件、用于web页面的http等应用程序需要可靠的数据传输网络中的数据流路径:IP主机和IP地址主......
  • [Luogu] P7911 [CSP-J 2021] 网络连接
    [CSP-J2021]网络连接-洛谷距离CSP2023还有\(**3**\)天题意及思路恶臭大模拟,按照题意模拟即可。有几个代码上的难点:当定义了一个scanf或者sscanf并且有一定的输入规则,那么如果读取到的字符串不符合定义的规则,那读入了几个变量就返回几个变量例如,如下代码定义了一个读......
  • [Luogu] P1164 小A点菜
    题目传送门一道动态规划,\(dp_{i, j}\)表示用前\(i\)个菜品花光\(j\)元的方法总数那么可以推出状态转移方程:\(if(j>a_i)\spacedp_{i,j}=dp_{i-1,j}+dp_{i-1,j-a_{i}}\)如果j比ai大,那么方案数就是不买\(dp_{i − 1, j}\)+买\(dp_{i − 1, j − a_i}\),其中如果买,那么......
  • [Luogu] P1114 “非常男女”计划
    https://www.luogu.com.cn/problem/P1114暴力,前缀和,稍加优化可以拿100,但是#1加强过后就AC不了了#include<bits/stdc++.h>usingnamespacestd;constintmaxn=2e6;inta[maxn],n,f[maxn],ans,boy;intmain(){ cin>>n; for(inti=1;i<=n;i++) { scanf("%d",a......
  • stm32学习随笔23.11.24
    探索TIM2两个PWM输出视频:B站BV1vb4y1T72LMain.C主函数部分节选#include"stm32f10x.h"                 //Deviceheader#include"Delay.h"#include"OLED.h"#include"TestLED.h"#include"PWM.h"#include"KEY.h"#incl......
  • 【刷题记录】20231124 线段树分治
    做题记录:注意到每次相当于\(0\)后面加\(1\),\(1\)后面加\(0\),因此每次可以合并01和10然后将问题规模减半。黑白染色,白格子=lcm+1,黑格子=prime相乘。发现横着竖着有六个质数,斜着只用四个质数。调整一下顺序即可。状压DP。考虑S作为前缀max时S与U-S的排列方案数。S每......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第九周学习总结
    2023-2024-120231320《计算机基础与程序设计》第九周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第九周作业)这个作业的目标<自学《计算机基础与......
  • 11.24每日总结
    今天完成了大数据的测试,这一次没有用hadoop用的是python直接对数据的导入、清洗、分析和可视化展示的操作,下面是所有的代码。 importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorch.utils.dataimportDataLoader,TensorDatasetfromsklearn.mod......