实现思路,启动一个线程每隔0.1秒去比较文本里字符长度变化,如果文本变长了,这个情况间隔时间超过2秒,则认为是人工键入。

对于字符串较多,且包含数字和字母的情况,比较适用。

class KeyCodeMonitorThread extends Thread
{
private long lasttxtfield1InPutTime = 0;
private long lastheheTxtFdInPutTime = 0; private int lasttxtfield1InPutLen = 0;
private int lastheheTxtFdInPutLen = 0; @Override
public void run()
{ while (m_bIsAliveFlag)
{ if (txtfield1.getText().length() > lasttxtfield1InPutLen &&
lasttxtfield1InPutTime > 0 && System.currentTimeMillis() - lasttxtfield1InPutTime > 3000)
{
txtfield1.setText("");
showWarningDialog("请扫描标签验证!而不是键入.");
} if (heheTxtFd.getText().length() > lastheheTxtFdInPutLen &&
lastheheTxtFdInPutTime > 0 && System.currentTimeMillis() - lastheheTxtFdInPutTime > 3000)
{
heheTxtFd.setText("");
showWarningDialog("请扫描标签验证!而不是键入.");
} if (txtfield1.getText().length() == 0)
{
lasttxtfield1InPutTime = 0;
lasttxtfield1InPutLen = 0;
}
else if (txtfield1.getText().length() > lasttxtfield1InPutLen)
{
lasttxtfield1InPutLen = txtfield1.getText().length();
} if (heheTxtFd.getText().length() == 0)
{
lastheheTxtFdInPutTime = 0;
lastheheTxtFdInPutLen = 0;
}
else if (heheTxtFd.getText().length() > lastheheTxtFdInPutLen)
{
lastheheTxtFdInPutLen = heheTxtFd.getText().length();
} if (0 == lasttxtfield1InPutTime && txtfield1.getText().length() > 0)
{
lasttxtfield1InPutTime = System.currentTimeMillis();
} if (0 == lastheheTxtFdInPutTime && heheTxtFd.getText().length() > 0)
{
lastheheTxtFdInPutTime = System.currentTimeMillis();
} try {
Thread.sleep(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
} }

Java Swing 防止键入手Key 的实现方法的更多相关文章

  1. Java 解密错误InvalidKeyException: Illegal key size解决方法

    做解密操作,出现如下错误 java.security.InvalidKeyException: Illegal key size // 设置解密模式为AES的CBC模式 Cipher cipher = ...

  2. Java Swing 树状组件JTree的使用方法(转)

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...

  3. Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  4. 一步一步写出java swing登录界面,以及输入的参数获取

    经过好几天的学习,研究,接下来说说java swing,以及内嵌浏览器的方法. 一.swing是一个用于java应用程序用户界面的的开发工具包. 例如:接下来我们做个登录界面,简要说明 做之前的构想图 ...

  5. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  6. Java swing项目-图书管理系统(swing+mysql+jdbc) 总结

    (一)java Swing的学习. (1)学习如何安装windowbuilder插件的安装. <1>在eclipse中点击help <2>在help的下拉选中选择install ...

  7. Java swing实现酒店管理系统

    今天给大家提供一个由今天给大家提供一个由Java swing实现的酒店管理系统,数据库采用sqlserver,我会贴上部分代码,完整的代码请看文章最下方下载,下面看代码: 1.主框架代码: packa ...

  8. 「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题

    目录 文档说明: 一.语言和环境 二.技术要求 三.功能要求 四.数据库设计 五.具体要求及推荐实现步骤 六.注意事项 实现代码: 一.数据库 二.Java Swing com.ynavc.Bean ...

  9. 「影院售票系统」 · Java Swing + MySQL JDBC开发

    目录 文档说明: 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 实现代码: 一.数据库: 二.Java Swing: com.ynavc.Bea ...

  10. 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发

    项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...

随机推荐

  1. 【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster

    本节开始,将对 ResourceManager 中一些常见行为进行分析探究,看某些具体关键的行为,在 RM 中是如何流转的.本节将深入源码探究「启动 ApplicationMaster」的具体流程. ...

  2. vulnhub靶场之MATRIX-BREAKOUT: 2 MORPHEUS

    准备: 攻击机:虚拟机kali.本机win10. 靶机:Matrix-Breakout: 2 Morpheus,下载地址:https://download.vulnhub.com/matrix-bre ...

  3. 如何在 JavaScript 中使用媒体查询

    前言 说起媒体查询想必大家最先想到的都是CSS中@media,没错,这是我们最常用的媒体查询方法,主要用来为我们的网站做适配处理. 比如: h1 { font-size: 2rem; color: g ...

  4. vue中引入静态图片

    vue+webpack中,可以使用require imageList: [ { url: require('../image/pig.png') } ] vue+vite没有require方法 // ...

  5. spring boot 配置多套数据源

    问题:需要在多个数据库中查询数据,不适用sql中的use语句. 导包 pom.xml <!-- mybatis,使用mybatis-plus也行,虽然plus的单表查询很强,在大部分情况下需要编 ...

  6. JDBC:实现Java与数据库的连接

    先了解重要的编程思想:ORM(object relational mapping) 即将数据库与JAVA的类一一映射(对应) 一个数据表对应一个Java类 表中的一条记录对应Java类的一个对象 表中 ...

  7. 04-python垃圾回收机制

    python垃圾回收机制 一.引入 解释器在执行定义变量的语法时,会申请内存空间来存放变量值,每一块内存空间都有其唯一的内存地址,我们在前面说过,变量名并不是存放的变量值,而是存放的内存地址,通过访问 ...

  8. k3s|如何将k8s集群的node节点设置不可调度或删除node节点?

    k3s|如何将k8s集群的node节点设置不可调度或删除node节点? k3s是由 Rancher 公司开发的轻量级Kubernetes,是经CNCF一致性认证的Kubernetes发行版,专为物联网 ...

  9. 免费语音转文字----使用Adobe Premiere Pro

    软件版本:Adobe Premiere Pro 2023   打开Adobe Premiere Pro,新建项目:   将要转为文字的录音拖入轨道:   序列→自动转录序列:   选择想要的设置,转录 ...

  10. MNIST数据集output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28]

    transform = transforms.Compose([ transforms.ToTensor(), transforms.Lambda(lambda x: x.repeat(3,1,1)) ...