如何解析Java Swing文本框中的磁条卡数据输入?

时间:2011-09-27 02:35:35

标签: java swing text-parsing magnetic-cards

我正在尝试编写一个应用程序,该应用程序将使用使用扫描条形码找到的id键或嵌入磁条卡数据中的数据来搜索和检索用户的配置文件。后者让我感到悲伤。在搜索用户配置文件之前,需要解析磁条数据。

我的问题是,有没有办法捕获扫描到文本框中的文本并在文本框中显示之前对其进行解析?

我的阅读器/扫描仪是键盘仿真类型,因此就好像在条带上编码的每个字符都在文本框中输入。我想一个解决方案(但它是最好的吗?)将截取每个击键(由磁条读取器模拟),将它们存储在缓冲区中并显示一个空字符,直到读取字符串结束。一旦读取卡的数据结束,我就可以解析并显示id的id部分。问题是......如果它们作为单独的字符键击输入,你怎么知道卡片的数据字符串的结尾?

2 个答案:

答案 0 :(得分:2)

您应该能够使用Document Filter拦截文本,因为它被添加到JTextField的Document中。然后,当您收到字符串字符的结尾时,您可以解析文本并将其插入文本字段。

答案 1 :(得分:2)

回答第一个问题是在文本字段的文档上设置DocumentFilter。

  

..你怎么知道这是卡的数据字符串的结尾,如果他们得到的话   作为单独的char键击输入?

您的MSR肯定会发出START_STRING和END_OF_LINE_STRING作为某些预定义字符的组合。阅读MSR设备的数据规范。一旦你有了,你就可以实现类似于这个伪代码的过滤器的insertString

if str == START_CHARACTER
    then clear buffer

if str == EOL_CHARACTER
    then parse and do super.insertString

else
    append string to buffer

同样,可以使用MSR的数据规范来实现解析逻辑。

(MSR =磁条阅读器)