Java swing中的keyListener使用事例
最近在学习Java swing,写了一个域内聊天室,实现用户登录ip,端口号之后,进入聊天窗口聊天:
通过菜单条增加了几个功能,边框,字体,颜色和文件传输。风格里的样式都可以通过自己选择来设置。
介绍以上。
但在实现发送的功能时,想要增加默认回车发送消息功能:
原来的send按钮监听事件代码:
private class sendListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String str = editMsg.getText();
try {
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
if(str.equals(" ") || str.equals("") || str==null){
JOptionPane.showMessageDialog(null, "输入不能为空,请重新输入!", "提示",JOptionPane.OK_OPTION);
}else{
dos.writeUTF(str);
}
dos.flush();
editMsg.setText("");
} catch (IOException e1) {
e1.printStackTrace();
}
}
中间的用户不可编辑的消息显示区,增加一个键盘监听事件:
editMsg.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent key1) {
return;
}
@Override
public void keyReleased(KeyEvent key2) {
int code = key2.getKeyCode();
if(code==10){
editMsg.setText("");
}
return;
}
@Override
public void keyPressed(KeyEvent key3) {
int code=key3.getKeyCode();
if(code==10){
String str = editMsg.getText();
try {
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
if(str.equals(" ") || str.equals("") || str==null){
JOptionPane.showMessageDialog(null, "输入不能为空,请重新输入", "提示",JOptionPane.OK_OPTION);
}else{
dos.writeUTF(str);
}
dos.flush();
editMsg.setText("");
} catch (IOException e1) {
e1.printStackTrace();
}
}
return;
}
});
keyTyped为按键敲击事件,keyReleased为按键按下之后释放时的方法,keyPressed为按钮按下之后,释放之前的方法。
在keyPRessed方法中,每按一次按键时,先获取keyCode编码,确定回车的ASCII码值,再来判断是否发送消息。
思路是正确的,但在此出现了一个问题,每次回车发送消息之后,会有一个自动换行的操作,这也导致判断消息为空的代码失效。
解决办法:在keyReleased的方法中同样再判断一次回车的ASCII码值,再次清空输入框,问题得到解决。
总结:在键盘的监听中,主要通过判断按键的执行顺序以及按键的ASCII值来采取对应操作。
转载于:https://www.cnblogs.com/Jery-9527/p/9749448.html
Java swing中的keyListener使用事例相关推荐
- swingworker_使用SwingWorker的Java Swing中的多线程
swingworker 如果要使用Swing用Java编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些程序. 没有什么可以阻止您在Swing中使用标准的 ...
- 使用SwingWorker的Java Swing中的多线程
如果要使用Swing用Java编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些东西. 没有什么可以阻止您在Swing中使用标准的多线程技术,并且需要遵循 ...
- Java Swing中的聊天气泡
本文将向您解释"如何在Java swing应用程序中绘制聊天气泡?" 聊天气泡与呼出气泡或思想气泡相同. 今天,大多数聊天应用程序都以这种格式显示转换,因此本文将帮助您在用Java ...
- java swing 注册事件_比较Java Swing中三种注册事件的方法
Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...
- Java Swing中键盘事件的处理
在Java Swing编程过程中,经常需要处理键盘事件,例如处理快捷键等.这里就介绍如何定义键盘事件,以及如何处理这些事件. 在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同 ...
- Java Swing中JFreeChart构建双纵轴(双Y轴)图表的使用纪要
背景 项目应用中整理纪要,用于参数说明.后抽部分简码以用例,特此纪要! 问题 Java Swing中JFreeChart如何构建双纵轴(双Y轴)图表 说明 JFreeChart是一个工厂类,是Swin ...
- JAVA Swing 中的表格
今天我们来学习一下java swing中的表格怎么来使用 在用swing技术开发系统的时候, 有时候会需要用到表格,那么我们来看看表格是怎么使用的 public class Table1 extend ...
- Java Swing中JFreeChart构建柱状图(非3D)时关于取消柱体的高亮问题的解决纪要?
背景 项目应用中后期的用例Demo,特此纪要! 问题 Java Swing中JFreeChart构建的柱状图(非3D)如何取消柱体的高亮显示? 说明 此Demo中点题的代码就一行,其余的代码段在其他的 ...
- java jbutton边框颜色_在Java Swing中更改JButton的边框颜色,以保留插图
我想更改Java Swing中JButton组件的边框颜色. 我尝试了以下方法: package com.example.test; import java.awt.Color; import jav ...
最新文章
- 推荐44个最具潜力的顶极深度学习开源框架和平台!!!
- PHP时间戳 strtotime()使用方法和技巧
- 1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】
- python排名分析_用Python分析了近几年胡润排行榜,我酸了……
- 免费网络研讨会:调试生产中Java的新方法
- 五、Python第五课——Python中组织列表的相关函数
- Teamcity+SVN+VisualStudio在持续集成简明教程
- 计算机法宝,计算机专业英语学习法宝.doc
- 基于3D技术的机器视觉解决方案
- 前端 省市区三级联动
- 小度wifi当无线网卡
- 在书的侧面(包括书口、书顶<上切口>、书根<下切口>)写的字如何去除
- 计算机辅助档案管理文字说明,计算机辅助档案管理
- 后盾人tp5教程_5个出色的应用程序以开放数据为后盾
- 分布式环境时钟同步问题
- 用最少数量的剑引爆气球
- 阿里云的云端实践有哪些?
- 年度目标进度和完成进度对比
- 一份关于人工智能、机器学习和大数据的报告
- 定语从句和同位语重句的区别
热门文章
- MMU内存管理单元(看书笔记)
- Redis——学习之路一(初识redis)
- Pile 0009: Vim命令梳理
- caffe调用的一个例子
- What's the difference between markForCheck() and detectChanges()
- 新版 Android 已支持 FIDO2 标准,免密登录应用或网站
- “换标”Intel的穷则思变
- mysql binlog日志查看及解码
- redhat6.4 安装oracle 10g error
- ZooKeeper典型应用场