【发布时间】:2014-09-23 10:47:13
【问题描述】:
我正在编写一个使用条形码扫描仪作为输入的小应用程序。 经过一些测试后,我选择了 evt.getKeyCode() == KeyEvent.VK_ENTER 来触发对数据库的检查。 因此用户可以在文本框中手动输入条形码,然后按回车键触发 DB 检查,或者使用扫描仪,一旦所有扫描的字符都发送完毕,扫描仪也会自动发送输入字符。
如果扫描的条形码有问题,我会使用 JOptionPane.showMessageDialog 向用户显示错误消息。当用户按下回车按钮关闭对话框时,它会再次触发对话框,就像在文本字段上再次按下回车按钮一样。它进入此循环,直到用户用鼠标单击确定按钮。
我该如何避免这种情况......
有没有比使用回车键更好的方法来检查扫描仪是否完全发送了它的所有字符并启动数据库检查
或
有没有办法让文本框在对话框显示时暂时松开焦点,并在对话框关闭时将焦点返回给它(用户按下回车键/单击确定/单击小“x”)。
我已经设法使用 hasFocus() 将焦点返回到文本框,但由于我在框架上只有一个文本框和 Jtable,所以我有点受限。在将对话框显示为解决方法之前,我尝试将焦点设置为 Jtable,然后重新聚焦到 textbox ,但问题仍然存在。甚至尝试将焦点设置在框架上,但仍然没有运气。
有什么想法吗?
【问题讨论】:
-
如果您展示您的一段代码,我们可以自己运行并看到问题,这将立即解决 (MCVE)。