我有一个便宜的磁卡读卡器,就像键盘一样。我连接它并刷卡,它将所有卡数据输入计算机。但由于某种原因,它在Java中并不起作用。它确实适用于我尝试过的所有非Java。
卡上有什么(在SO编辑器中实际刷卡):
;00548757802?
使用Java时:
;0◘)P87┼7\02?
_005487578D♥
;005487G802?
_005*J657802{
♣00548I5♣802?
;≥T548757♠╢·?
≥T54875I↑:?
正如您所看到的,每次都有所不同。但是,读者会在数据之后发送换行符,Java似乎可以识别该数据。
我的阅读输入代码:
// Bound to a JTextField
public void keyTyped(KeyEvent e) {
System.out.print(e.getKeyChar());
}
JTextField还显示文本乱码。
这里有什么问题,我该如何解决?
答案 0 :(得分:1)
您似乎已向KeyListener
添加了JTextField
,Key Bindings使用了每个平台特有的BufferedReader
。而是使用event dispatch thread来阅读System.in
; readLine()
方法应该能够检测到行结束。
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
为避免阻止SwingWorker
,请在{{3}},publish()
结果的后台进行I / O操作,并更新您的JTextField
实施process()
。
答案 1 :(得分:0)
好吧,我明白了。我便宜的15美元读卡器设置为使用alt代码进行数据输入,而不是简单的击键。我能够使用我在网上找到的实用程序对其进行重新编程,以模拟普通键盘而不是为每个字符键入alt代码。