这是上学期JAVA选修课课下的一道简单的线上家庭作业题,题目描述如下:

总的来说就是要按照它的描述写一个聊天室界面。由于是选修课要求不高,老师只要求我们写出大致界面即可不用实现具体功能,不过闲来无事我还是给它加了一个简单的监听器用以传递消息。话不多说上代码:

一、界面类:

1、框架与设置布局就不说了

//框架JFrame jFrame = new JFrame("Chat Display ClientA");jFrame.setSize(500, 500);jFrame.setResizable(false);jFrame.setLocationRelativeTo(null);jFrame.setDefaultCloseOperation(3);//设置流式布局jFrame.setLayout(new FlowLayout());

2、设置并完善菜单栏

//设置菜单栏并添加到界面JMenuBar jMenuBar = new JMenuBar();jMenuBar.setPreferredSize(new Dimension(450, 30));jFrame.add(jMenuBar);//在菜单栏中添加菜单JMenu jMenu01 = new JMenu("File");JMenu jMenu02 = new JMenu("Action");jMenuBar.add(jMenu01);jMenuBar.add(jMenu02);//给对应的菜单设置多个选项JMenuItem jMenuItem01 = new JMenuItem("Save");JMenuItem jMenuItem02 = new JMenuItem("Eixt");jMenu01.add(jMenuItem01);jMenu01.add(jMenuItem02);

此段代码最终实现的效果如下:

3、设置与关键字相链接的文本框

//设置文本框并设置为不可编辑JTextArea jTextArea01 = new JTextArea(18, 40);jTextArea01.setEditable(false);JTextArea jTextArea02 = new JTextArea(18, 40);jTextArea02.setEditable(false);//两个文本框与不同关键字链接,并重合于一个区域JTabbedPane jTabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);jTabbedPane.add("public", jTextArea01);jTabbedPane.add("private", jTextArea02);jFrame.add(jTabbedPane);

此段代码最终实现的效果如下:

4、设置好友列表与编辑发送区域

//设置发送者标签和好友列表并添加到界面JLabel jLabel01 = new JLabel("Send To");String listData[] = {"长长","卓洋","浩浩","public"};JComboBox<String> jComboBox = new JComboBox<>(listData);jComboBox.setPreferredSize(new Dimension(400, 30));jFrame.add(jLabel01);jFrame.add(jComboBox);//设置编辑、发送信息的区域并添加到界面JLabel jLabel02 = new JLabel("Message");JTextField jTextField = new JTextField();jTextField.setPreferredSize(new Dimension(330, 30));JButton jButton = new JButton("Send");jFrame.add(jLabel02);jFrame.add(jTextField);jFrame.add(jButton);

此段代码最终实现效果如下:


5、设置可见并给发送按钮加监听器

//设置可见jFrame.setVisible(true);//加监听器并传参CListener listener = new CListener(jTextField,jComboBox,jTextArea01,jTextArea02);//给发送按钮加监听器jButton.addActionListener(listener);

二、监听器类
很简单的监听器,直接上代码:

public class CListener implements ActionListener{JTextField jTextField = new JTextField();JComboBox <String> jComboBox = new JComboBox<>();JTextArea jTextArea01 = new JTextArea();JTextArea jTextArea02 = new JTextArea();//构造函数传参public CListener(JTextField jTextField , JComboBox<String> jComboBox, JTextArea jTextArea01,JTextArea jTextArea02){this.jTextField = jTextField;this.jComboBox = jComboBox;this.jTextArea01 = jTextArea01;this.jTextArea02 = jTextArea02;}public void actionPerformed(ActionEvent e){if(e.getActionCommand().equals("Send")){ //监听到点击了发送按钮if(jComboBox.getSelectedItem().equals("长长") || jComboBox.getSelectedItem().equals("卓洋")|| jComboBox.getSelectedItem().equals("浩浩")){ //如果是发给好友则在private文本框中显示发送信息jTextArea02.setText(jTextField.getText());}else if(jComboBox.getSelectedItem().equals("public")){ //否则在public文本框中显示发送信息jTextArea01.setText(jTextField.getText());}}}
}

最终实现效果如下:

如果在好友列表中任意选择一位好友,点击“Send”按钮发送信息,则信息会显示在private对应的文本框中:

如果在好友列表中选择public,点击“Send”按钮发送信息,则信息会显示在public对应的文本框中:

That’s all,over!

小结:
JMenuBar:菜单栏
JMenu:菜单栏中的各个菜单
JMenuItem:菜单中的各个选项
JTextArea:文本框
JTextArea中的setEditable(true/false)方法:设置文本框是否可编辑
JTabbedPane:可让多个文本框重合的区域
JTabbedPane中的add(String,JTextArea)方法:将文本框与某个关键字链接为一个整体,并加入到各文本框重合区域
JComboBox:下拉列表

JAVA——如何写一个简单的聊天框相关推荐

  1. C语言能干什么?手把手教你写一个简单的聊天软件

    一.服务端代码 因为端口号容易被占用的原因,所以IP地址和端口号采用参数传递的方法,即 int main(int argc,char **argv) 1.头文件 #include <stdio. ...

  2. Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。

    我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...

  3. java程序 购物车_用java代码写一个简单的网上购物车程序

    1 需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法.2 3 3.写一个购物车类,有添加商品方法.查看订单信息,删 ...

  4. Vue初体验(七)使用Vue实现一个简单的聊天框

    1.实践是检验真理的唯一标准,现在我们做一个简易的聊天窗口,有一个input框,用于用户输入,一个按钮button,用于把用户的输入提交上去,然后又一个列表ul,用于展示我们每次提交的消息. 2.通过 ...

  5. 通过java程序写一个简单的创造游戏角色的程序

    一.题目分析: 题目要求,编写一个简化的创造游戏角色的程序,游戏角色应有:姓名,性别,种族,职业,力量,敏捷,体力,智力,智慧,生命值,魔法值等属性. 题目思路:根据题目可知,无论创建什么种族角色,都 ...

  6. java如何写一个简单的定时任务?

    使用java自带类Timer 通过import java.util.Timer导入Timer类,定时任务实现通过Timer的scheduler方法,scheduler方法包括三个入参,分别是定时任务, ...

  7. Java 手写一个简单计算器(1)

    用java的awt和swing实现了界面, 结构比较简单,用GridLayout布局实现 文本框+3行按钮+3行按钮: 按钮用字符串数组和for循环 后两个用JPanel存放 然后加到框架中即可 由于 ...

  8. 用Java语言写一个简单的值日生

    public class Student {protected String name;public static void main(String[] args) {while(true) {//用 ...

  9. java Swing 做一个简单的输入文本框

    java Swing做一个简单的文本输入框, 新建一个SwingDemo类: // //java swing做一个简单的文本框 //Created by lee_1310 on 2019.03.29 ...

最新文章

  1. 如何使用TensorCores优化卷积
  2. 【flutter】把Google官方的历史时间demo跑起来
  3. TIOBE 9月编程语言排行榜
  4. explicit_defaults_for_timestamp参数的专题报告
  5. CCF2016.4 - A题
  6. Leetcode 583.两个字符串的删除操作
  7. win10下安装和卸载Ubuntu双系统
  8. 云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...
  9. underscore源码剖析之整体架构
  10. ASP.NET Core——身份验证UI安装
  11. vscode下的好用插件收集
  12. python动态加载模块有什么用_人生苦短我用python(02)动态加载模块
  13. html如何隐藏盒子的边框线,用DIV和CSS做一个实线边框的红色盒子
  14. 学python语言有前途吗-Python语言是什么?学Python语言有前途吗?
  15. Alios-Things之wifi模块二次开发-(1)搭建Alios-Things开发环境(基于ubuntu 16.0.4)
  16. 基于JavaEE的人力资源管理系统的设计与实现任务书与开题报告
  17. 数据库-mysql MHA集群方案测试
  18. kindle 安卓 app下载的电子书放在什么文件夹?
  19. HZAU毕设之装订边边距32 mm、非装订边边距25 mm的操作
  20. linux系统安全应急响应

热门文章

  1. Android 电话和短信拦截
  2. 电脑重命名文件会卡住很久的解决办法
  3. 美术集网校—超简单风景水彩画教程来啦,把风景留在画本里!
  4. 鸿蒙之境的称号,神都夜行录鸿蒙之境怎么打 鸿蒙之境阵容搭配方法一览
  5. VTK读取dicom序列,并保存成vtk和obj格式的3D格式文件
  6. 名帖117 祝允明 小楷《东坡记游卷》
  7. jtag keil v11驱动_Keil for ARM/ Realview MDK 中用JTAG调试的方法
  8. ES5及ES6数组方法
  9. OMNET++学习(Networks)
  10. window安装RabbitMQ 环境配置