扫描枪自带回车的Java模拟

原创 2015年11月19日 23:01:59

[可以作为《编程导论(Java)·9.3.4键盘事件处理》的补充材料,GUI部分内容太多,同学们需要做一些例程自学各种控件的使用——yqj2065是木有心思在书中或上课时讲这些东西的尴尬。GUI部分搞清楚好莱坞原则/观察者模式、编写几个事件处理demo就可以了,其他请大家自学。]


扫描枪读取的数据,通常自带回车。开发相关系统时,需要编写一个模拟扫描枪的QRReaderDialog。

1.java.awt.Robot

JTextField作为数据接受控件,在它上面按下Enter键,可以监听Action事件或Key事件;而“按下Enter键”,就需要用到java.awt.Robot。

一个小例子:在Netbeans中编写的InputDemo



package demo;

import com.sun.glass.events.KeyEvent;
import java.awt.Robot;

/**
 *
 * @author yqj2065
 */
public class InputDemo extends javax.swing.JFrame {

    private final Robot robot;

    public InputDemo() throws Exception {
        robot = new Robot(); //创建一个robot对象
        initComponents();
    }

    public void keyPress(int key) {
        robot.delay(50);
        robot.keyPress(key);
        robot.keyRelease(key);
    }

                         
    private void initComponents() {
        //略
    }
    private void input_TextFieldKeyPressed(java.awt.event.KeyEvent evt) {                                           
        if (KeyEvent.VK_ENTER == evt.getKeyCode()) {
            KeyPressed_Label.setText(input_TextField.getText());

        }
    }                                          

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int i = (int) (Math.random() * 10000000) + 1;
        String str = i + "二维码数据";
        input_TextField.setText(str);
        input_TextField.requestFocus();
        this.keyPress(java.awt.event.KeyEvent.VK_ENTER);
    }                                        

    private void input_TextFieldActionPerformed(java.awt.event.ActionEvent evt) {                                                
        ActionPerformed_Label.setText(input_TextField.getText());
    }                                               

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {//略

    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel ActionPerformed_Label;
    private javax.swing.JLabel KeyPressed_Label;
    private javax.swing.JTextField input_TextField;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    // End of variables declaration                   
}

2.QRReaderDialog与MyJTextField


QRReaderDialog是一个简单的对话框,点击其上的Read once按钮,产生一条字符串——表示读取的二维码信息。MyJTextField将作为Read once按钮的Action事件监听器。

设计MyJTextField时,就有两个选项:MyJTextField在setText(qrCode)后是否自带回车。

如果自带回车,装箱操作窗口将监听MyJTextField的Action事件或Key事件;

不自带回车,装箱操作窗口将监听MyJTextField的内容变化事件,即对MyJTextField对象inputTextField,调用下面的语句:

inputTextField.getDocument().addDocumentListener(new MyDocumentListenerImpl());

两种方式都可以达到目的,前者使用java.awt.Robot,后者要自定义MyDocumentListener implements javax.swing.event.DocumentListener ,并给出其实现类。

package qrms.ui.util;
import javax.swing.event.DocumentEvent;

/**
 *
 * @author yqj2065
 */
public abstract  class MyDocumentListener implements javax.swing.event.DocumentListener {
    public abstract void textChangedHandle();

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

    @Override
    public void removeUpdate(DocumentEvent e) {
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
    }

}


JAVA读取USB扫描枪

利用JAVA程序获取扫描枪的数据 package barcode; import java.util.concurrent.BlockingQueue; import java.util.c...

Java--串口之间的通信及扫描枪的读取

串口通信我以自己刚做的功能做为核心记录这篇博客 ①. 是基于modbus通信协议之间的通信 ②. 是十六进制进行通信的 ③. 可选波特率,数据位 停止位 ④采用CRC...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java 读取扫描枪

Java结合applet  读取扫描枪扫描二维码  需要用到win32com.dll和javax.comm.properties Java代码: import java.applet.Apple...
  • kasot
  • kasot
  • 2016年04月22日 14:22
  • 728

javaweb条形码产生、打印、扫描

产生条形码的插件到是不少,但是能用针式打印机打印在合适表单上,而且能用常用的激光扫描器扫描出来的demo到不是很多。 本文,所牵扯的代码与工具均亲测可用,具有一定的参考意义、实施可行性。...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

怎样区分条码枪输入后触发的回车与键盘回车

今天在做条码枪扫描商品条码来选择商品时,发现有一个矛盾:条码枪其实是模拟键盘事件的:先模拟敲击键盘,输入它所扫描到的条码,在输入完毕后,再模拟敲击键盘的回车事件。而为了提高功能的易用性,页面本身就有一...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:扫描枪自带回车的Java模拟
举报原因:
原因补充:

(最多只允许输入30个字)