Java Swing 防止键入手Key 的实现方法
2024-10-21 09:46:09
实现思路,启动一个线程每隔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();
}
}
} }
最新文章
- VS2013中web项目中自动生成的ASP.NET Identity代码思考
- Mersenne twister 随机数算法实现 in Scheme
- Java SCP copy local file to remote implementation
- loadrunner统计字符串中指定字符出现的次数
- 使用Visual Studio下自带的SQL Server Express
- Hadoop学习11--Ha集群配置启动
- 高通APQ8074 spi 接口配置
- Unable to open serial port /dev/ttyUSB0
- Kung fu
- 10个最佳的网站和App开发工具
- (搬运工)国内顺利使用Google的另类技巧
- js的eval方法
- 使用Entity Framework 4进行代码优先开发
- java之生成可重复执行的sql脚本
- CSS3 border-radius 圆角
- Elasticsearch 5.x 字段折叠的使用
- pycharm开发django项目 static报404解决方法
- 自适应图片宽度的jQuery焦点幻灯轮播代码
- 【node错误】/usr/bin/env: node: No such file or directory
- 在Unity中实现屏幕空间反射Screen Space Reflection(2)