构建聊天客户界面,包括消息显示文本框、消息发送文本框、选择好友的选择框、发送按钮。并为发送按钮添加事件,把消息显示在消息窗口中。

题目:构建聊天客户界面,包括消息显示文本框、消息发送文本框、选择好友的选择框、发送按钮。并为发送按钮添加事件,把消息显示在消息窗口中。

1.创建窗体与按钮、添加实训需要的组件

	JTextField text ;//文本框JButton button ;//按钮JTextArea area ;//显示区域ButtonGroup group ;//创建ButtonGroup组对象@SuppressWarnings("rawtypes")//参数化对象框JComboBox box;//对象框@SuppressWarnings("unchecked")public JTextFrame(String title){super(title);//设置窗体标题//创建组件JPanel panel = new JPanel();JLabel label = new JLabel("聊天信息");text = new JTextField(20);button = new JButton("发  送");area = new JTextArea(15,20);JPanel panel2 = new JPanel();group = new ButtonGroup();//创建ButtonGroup组对象String[] str = {"张华", "李文"};box = new JComboBox(str);//添加组件//panel.add(label);panel.add(text);panel.add(box);panel.add(button);//定义并建立关系分类的树DefaultMutableTreeNode friend  =   new  DefaultMutableTreeNode( " 好友 ",true );DefaultMutableTreeNode  family  =   new  DefaultMutableTreeNode( " 家人 ");DefaultMutableTreeNode  schoolmate  =   new  DefaultMutableTreeNode( " 朋友 ");family.add(new DefaultMutableTreeNode("张华"));schoolmate.add(new DefaultMutableTreeNode("李文"));friend.add(family);friend.add(schoolmate);JTree tree = new JTree(friend);JScrollPane sp1= new JScrollPane(tree);//区域划分this.setLayout(new BorderLayout());this.add(sp1,BorderLayout.EAST);this.add(panel,BorderLayout.SOUTH);this.add(area,BorderLayout.CENTER);//增加其他功能(未实现,实训内容可加可不加)JMenuBar menuBar = new JMenuBar();JMenu menu1 = new JMenu("管理");JMenu menu2 = new JMenu("帮助");JMenuItem item11 = new JMenuItem("退出");JMenuItem item21 = new JMenuItem("帮助");menu1.add(item11);menu2.add(item21);menuBar.add(menu1);menuBar.add(menu2);this.setJMenuBar(menuBar);//设置窗口尺寸this.setSize(600,400);this.setLocation(300,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);//注册动作事件监听button.addActionListener(new ButtonListener(this));}

2.按钮监听,显示发送的内容

class ButtonListener implements ActionListener{JTextFrame jf;public ButtonListener(JTextFrame jf) {this.jf=jf;}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub	String str = jf.text.getText();if(str!=null&&!str.trim().equals("")) {	//判断字符串不为空并且除去空格也不为空jf.area.append("我对"+jf.box.getSelectedItem()+"说:"+str+"\n");}}
}

以下是限定输入字符只能为数字(可加可不加,加则需要添加相应的import)

	   //确保输入的为数值,其它输不进去text.addKeyListener(new KeyAdapter(){public void keyTyped(KeyEvent e) {// TODO 自动生成的方法存根int ch = e.getKeyChar();if(ch>=KeyEvent.VK_0&&ch<=KeyEvent.VK_9){}else e.consume();}});

全代码如下:

/** @author:诗&影* 功能:简单的聊天发送端* 声明:如有不当之处,可以交流,加以改正。(内容简单 供参考)* */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;class ButtonListener implements ActionListener{JTextFrame jf;public ButtonListener(JTextFrame jf) {this.jf=jf;}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub	String str = jf.text.getText();if(str!=null&&!str.trim().equals("")) {	//判断字符串不为空并且除去空格也不为空jf.area.append("我对"+jf.box.getSelectedItem()+"说:"+str+"\n");}}
}class JTextFrame extends JFrame{JTextField text ;//文本框JButton button ;//按钮JTextArea area ;//显示区域ButtonGroup group ;//创建ButtonGroup组对象@SuppressWarnings("rawtypes")//参数化对象框JComboBox box;//对象框@SuppressWarnings("unchecked")public JTextFrame(String title){super(title);//设置窗体标题//创建组件JPanel panel = new JPanel();JLabel label = new JLabel("聊天信息");text = new JTextField(20);button = new JButton("发  送");area = new JTextArea(15,20);JPanel panel2 = new JPanel();group = new ButtonGroup();//创建ButtonGroup组对象String[] str = {"张华", "李文"};box = new JComboBox(str);//添加组件//panel.add(label);panel.add(text);panel.add(box);panel.add(button);//定义并建立关系分类的树DefaultMutableTreeNode friend  =   new  DefaultMutableTreeNode( " 好友 ",true );DefaultMutableTreeNode  family  =   new  DefaultMutableTreeNode( " 家人 ");DefaultMutableTreeNode  schoolmate  =   new  DefaultMutableTreeNode( " 朋友 ");family.add(new DefaultMutableTreeNode("张华"));schoolmate.add(new DefaultMutableTreeNode("李文"));friend.add(family);friend.add(schoolmate);JTree tree = new JTree(friend);JScrollPane sp1= new JScrollPane(tree);//区域划分this.setLayout(new BorderLayout());this.add(sp1,BorderLayout.EAST);this.add(panel,BorderLayout.SOUTH);this.add(area,BorderLayout.CENTER);//增加其他功能(未实现,实训内容可加可不加)JMenuBar menuBar = new JMenuBar();JMenu menu1 = new JMenu("管理");JMenu menu2 = new JMenu("帮助");JMenuItem item11 = new JMenuItem("退出");JMenuItem item21 = new JMenuItem("帮助");menu1.add(item11);menu2.add(item21);menuBar.add(menu1);menuBar.add(menu2);this.setJMenuBar(menuBar);//设置窗口尺寸this.setSize(600,400);this.setLocation(300,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);//注册动作事件监听button.addActionListener(new ButtonListener(this));}
}public class chat {public static void main(String []args){new JTextFrame("微信聊天");}
}

运行结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52678.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【元宇宙欧米说】从个人创作者的角度聊聊NFT

普通人如何进入元宇宙&#xff1f;什么是在Web领域常见的坑&#xff1f;NFT创作方式的未来发展方向在哪&#xff1f; 9月2日下午三点&#xff0c;cat civilization创作者cat小浪将以“从个人创作者的角度聊聊NFT”为题&#xff0c;分享自己进入元宇宙、web3领域的经验&#xf…

常用的画图工具(UML图、业务流程图、时序图)

画图工具 http://draw.io http://draw.io是一个免费的画图工具&#xff0c;为用户提供最强大、易用的作图功能&#xff0c;既支持在线画图&#xff0c;也支持离线画图&#xff01; 支持创作系统架构图、流程图、UML图、时序图、思维导图、组织结构图、网络拓扑图、BPMN、UI界…

程序流程图

程序流程图 简介基本结构作用及优缺点常用的标准符号 简介 程序流程图是用规定的符号描述一个专用程序中所需要的各项操作或判断的图示。这种流程图着重说明程序的逻辑性与处理顺序&#xff0c;具体描述了微机解题的逻辑及步骤。当程序中有较多循环语句和转移语句时&#xff0…

数据流程图画法

数据流图的绘制分三步走&#xff1a; 1、确定系统的输入输出&#xff1b; 2、由外向里画系统的顶层数据流图&#xff1b; 3、自顶向下逐层分解&#xff0c;绘出分层数据流图。 销售管理系统的分层数据流图 接下来&#xff0c;我们作进一步解读&#xff1a; 一、理解数据流…

如何绘制业务流程图?

绘制业务流程图是产品经理必备掌握的技能之一&#xff0c;尤其是对 B 端产品经理来说&#xff0c;要分析好需求写好一篇完整的 PRD 文档&#xff0c;首先就是绘制正确的业务流程图。 什么是业务流程图 在开始讲业务流程图之前&#xff0c;我们需要先了解一下业务流程图的定义。…

流程图怎么画?超详细教程,各种高逼格流程图轻松搞定!

无论是在办公还是在生活中&#xff0c;流程图都是一个必不可少的重要辅助工具&#xff0c;大到建筑设计小到生活计划都需要使用流程图来帮助我们更好的完成每一件事情&#xff01; 但是流程图怎么做呢&#xff1f;很多朋友还是不知道的&#xff0c;今天小编给大家带来快速绘制…

程序流程图N-S图PAD图

在需求分阶段经常使用3种方法去剖析我们所面对的业务。 程序流程图 任何复杂的程序图都应由5种基本控制结构组成或嵌套而成。 盒图&#xff08;N-S图&#xff09; Nassi和Scheiderman提出了一种符合结构化程序设计原则的图形描述工具&#xff0c;叫作盒图&#xff0c;也叫做…

AI作画的背后是怎么一步步实现的?一文详解AI作画算法原理+性能评测

前言 “AI作画依赖于多模态预训练&#xff0c;实际上各类作画AI模型早已存在&#xff0c;之所以近期作品质量提升很多&#xff0c;可能是因为以前预训练没有受到重视&#xff0c;还达不到媲美人类的程度&#xff0c;但随着数据量、训练量的增多&#xff0c;最终达到了现在呈现…

漫画人工智能下象棋,走一步,能看几步?

老师爱下象棋&#xff0c;就是谁也赢不了。 去公园下了一盘棋 &#xff0c;第一步我就走了一个当头炮 &#xff0c;剩下的都是大爷们帮我走的。 结果&#xff0c;我输了。 经过他们的总结研究&#xff0c;我第一步走错了 。 2022年&#xff0c;象棋AI下棋机器人&#xff0c;…

Python实现照片卡通化,一拳打破次元壁 | 机器学习

目录 前言 项目结构 核心代码 总结 前言 接着我上一篇开源机器学习的使用&#xff1a;如何将照片变成卡通图&#xff0c;animegan2-pytorch机器学习项目使用 | 机器学习_阿良的博客-CSDN博客 我还是继续把项目稍微魔改一下&#xff0c;依然变为一个python文件就可以执行单…

人工智能画画 yyds

最近 AI 绘画火的一塌糊涂&#xff0c;你输一句话 AI 自动把你描述的场景画出来。本文盘点 GitHub 上几个较火的 AI 绘画开源项目。 本期推荐开源项目目录&#xff1a; 1. Latent Diffusion 2. PI-REC 3. Disco Diffusion 4. DALLE 01 Latent Diffusion Stable Diffusion 是 St…

人脸动漫化AnimeGAN V2的具体实施步骤

本文提供应对课设&#xff0c;毕设的小伙伴们一些参考&#xff1a;项目是参照网络上比较火的一个项目AnimeGAN V2&#xff0c;然后当时的一个课题也是跟这个相关&#xff0c;然后我是直接调用这个的&#xff0c;但是中间遇到过很多的问题&#xff0c;现在想说明一些问题&#x…

详解生成对抗网络(GAN)- 体验AI作画

目录 1.GAN是什么&#xff1f; 2.GAN的计算 3.编写GAN的小小示例 4.GAN的发展与应用 5.AI作画体验-Disco Diffusion 1.GAN是什么&#xff1f; 2014年&#xff0c;因为朋友邀请协助一个计算机生成图像的项目&#xff0c;lanGooddellow发明了GAN&#xff08;Generative ad…

人工智能下象棋,走一步,能看几步?|漫画

图文原创&#xff1a;谭婧 谭婧老师爱下象棋&#xff0c;就是谁也赢不了。 去公园下了一盘棋 &#xff0c;第一步我就走了一个当头炮 &#xff0c;剩下的都是大爷们帮我走的。 结果&#xff0c;我输了。 经过他们的总结研究&#xff0c;我第一步走错了 。 2022年&#xff0c;象…

参考文献怎么查找,去哪里查找?一篇文章讲明白这些问题

在我们撰写论文查找参考文献时&#xff0c;往往不知道从哪里入手&#xff0c;本文小编就针对下面这三个方面给大家详细讲解下&#xff1a; 一、查找参考文献方法 二、参考文献资料查找网站 三、参考文献格式规范 一、查找参考文献方法&#xff1a; 1、知网全球最大的中文数据…

与外文文献有关的那些事儿

目录 SCI是什么 一、SCI分区依据&#xff1f; 二、如何查找外文文献 1.常用的外文文献数据库​编辑 2.Web of Science数据库 总结 SCI是什么 SCI是美国《科学引文索引》的英文简称&#xff0c;其全称为&#xff1a;Science Citation Index,&#xff0c;创刊于1961年&…

从算力到存力:存储芯片研究框架(2023)

2023年3月31日&#xff0c;我国发起对美光在华销售产品的网络安全审查&#xff0c;体现出存储产业安全的重要性。此外&#xff0c;AI算力需求拉动高算力服务器出货&#xff0c;而AI服务器的存力需求更强&#xff0c;AI将驱动“从算力到存力”的中长期需求&#xff1a; 1、海外…

Python为什么有那么多人在学?有了ChatGPT还有必要学习Python吗?

为什么学习Python呢&#xff1f; 学习 Python 的原因有很多&#xff0c;以下是一些常见的原因&#xff1a; 简单易学&#xff1a; Python 是一门易于学习的编程语言&#xff0c;语法简单、清晰明了&#xff0c;可以快速掌握基本的编程概念。 应用广泛&#xff1a; Python 是…

在数字化质变“奇点”时刻,看数字生产力跃升的华为观

&#xff08;华为轮值董事长孟晚舟&#xff09; 进入2023年&#xff0c;以大语言模型为代表的新AI&#xff0c;打开了全球对于数字生产力的全新认知&#xff1a;高盛集团经济学家认为&#xff0c;ChatGPT等生成式AI最终可能在10年的时间里使得全球年GDP增长7%&#xff08;近7万…

chatgpt赋能python:Python照片换底:让您的照片更具艺术感

Python照片换底&#xff1a;让您的照片更具艺术感 Python是一种高级编程语言&#xff0c;拥有丰富的库和工具&#xff0c;可以实现多种应用。其中&#xff0c;照片换底技术是很多人感兴趣的内容之一。通过使用Python&#xff0c;您可以自动抠出照片中的主体&#xff0c;并将其…