ACR39U----防阿呆 文本框输入长度限制

在原始的软件里还存在一个很关键的问题,输入长度被限制!

sdk里默认对卡片的读写,都是基于char来进行的,也就是说,无论你输入什么,他都会自动的转换为char,然后取他的ascii码来写入。除此之外还非常贴心地设置了一个长度限制,以防止用户输入数据的时候超过了允许操作的范围。

于是以上的操作就导致了,在写入过程中,不仅你写不了自己原本想要写入的数据,而且数据写到一半,他就会限制输入

好像上厕所上到一半就地震了。实在让人既尴尬又难受

而关于数据的转码,string和byte[]之间的互相转换,在之前的几个文章里,已经提到过了。

所以这篇文章需要说的是关于JTextArea的长度限制问题。

在读卡器软件里的输入限制和普通文本框的输入限制有几个不一样的地方

普通的文本框,如果想要限制数据的话,直接判断文本框内输入的长度,然后将超出的键值设置为空就行。就如下图所示↓

JTextArea原.png
↑注意,此时的empty是定义为空的char变量。

但是读卡器软件里的文本框输入限制,除了对长度进行判断之外,还需要对数据之间的空格进行判断。

因为读卡器读到的字节与字节之间会自动带一个空格来表示隔断,所以如果想对已经读出的数据进行修改的话,那么防呆设置里就需要对空格进行替换,并且对数据的长度进行重新计算。于是就如下图所示↓

JTextArea.png

关于Helper.countchar里的代码:↓
counterchar.png

相当于在原始的基础上面,直接把限制的数量乘以二,然后对于文本框里的内容去除空格后重新计算长度,并且省略了无意义的转换byte这一步。

虽然整体的代码比较潦草,但是......编程嘛,最重要的是开心。人和程序有一个能跑的,那么这次的编程就是轻松且愉快的

发表评论

电子邮件地址不会被公开。 必填项已用*标注