gpt4 book ai didi

java - 如何在没有文本字段 Java 的情况下监听键盘输入

转载 作者:行者123 更新时间:2023-11-30 04:41:26 29 4
gpt4 key购买 nike

我正在开发一个 Java 应用程序,并与充当键盘输入设备的 RFID 读取器进行交互。

该应用程序将用于员工时间跟踪,因此员工不应看到他/她的 RFID 标签包含的代码。

目前,应用程序打开一个 jFrame,要求员工扫描他们的标签。这是我想听键盘输入的地方。

所有 RFID 标签都是 10 位数字,因此我想使用某种正则表达式来检测卡片何时被扫描(如果可能)。

如果有人能给我指出正确的方向,或者贡献一些代码,我将不胜感激。

提前致谢。

更新:

通过将以下内容添加到 JFrame 的构造函数中,我能够读取扫描仪的输入。

addKeyListener(new KeyListener(){
@Override
public void keyPressed(KeyEvent e){ System.out.print(e.getKeyChar());}
@Override
public void keyReleased(KeyEvent e) { }
@Override
public void keyTyped(KeyEvent e) { }
});

所以现在可以确认Reader只是标准的键盘输入。

以下是我获得的标签示例:0006459027

现在,最大的问题是,我如何获取我得到的字符,并检测它是一个 10 位数字的字符串,并从那里触发一个事件来打开一个新框架?

最佳答案

首先,我会查看在扫描标签时 RFID 读取器是否触发要触发的 ActionEvent。这将是最简单的方法。

如果做不到这一点,您需要将 DocumentListener 附加到文档底层的字段并监视更改。

您需要决定如何最好地中断结果(因为您可能一次获得 RFID 的每个字母)。您可以监视文档的长度,或者使用一个在短暂延迟后触发的 javax.swing.Timer(您可以在 DocumentListener 触发的每个更新事件上重置计时器) >)

查看

我建议您也看看 DocumentFilter,但您对最终结果感兴趣,而不是修改它。

更新了 DocumentListener 示例

// In the classes variable decleration section...
private JTextField rfidField;

// In the classes constructor or UI init method...
rfidField = new JTextField(12);
rfidField.getDocument().addDocumentListener(new DocumentListener() {

public void handleUpdate(DocumentEvent e) {

if (e.getDocument().getLength() == 10) {

System.out.println("Trigger me happy...");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
rfidField.setText(null);
}
});

}

}

@Override
public void insertUpdate(DocumentEvent e) {
handleUpdate(e);
}

@Override
public void removeUpdate(DocumentEvent e) {
handleUpdate(e);
}

@Override
public void changedUpdate(DocumentEvent e) {
handleUpdate(e);
}
});

// Now don't forget to add the field to your forms container ;)
//////

当您“触发”代码事件时,我要做的一件事是,一旦您从文本字段中读取了它,就清除文本字段(JTextField.setText(null) )-恕我直言

关于java - 如何在没有文本字段 Java 的情况下监听键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12189170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com