部分代码来自网上,所需jar包:barbecue-1.5-beta1.jar,jbarcode-0.2.8.jar
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import javax.swing.JFrame;
import org.jbarcode.JBarcode;
import org.jbarcode.encode.Code39Encoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.paint.BaseLineTextPainter;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.WideRatioCodedPainter;
import org.jbarcode.paint.WidthCodedPainter;
import org.jbarcode.util.ImageUtil;
import net.sourceforge.barbecue.Barcode;
import net.sourceforge.barbecue.BarcodeException;
import net.sourceforge.barbecue.BarcodeFactory;
/**
* @description 针对条形码的帮助类
* @使用方法 类名调用
* @方法一:getNumStringByBarcode() 扫描条形码得到对应的数字字符串
* @方法二:(可以不用,方法三取代)getBarcodeByNumString(String numStr) 通过一串数字字符串得到条形码(swing显示)
* @author
* @区分键盘输入还是扫描枪输入 思路:扫描输入的间隔比较均匀且时间很短(小于50毫秒), 而手动输入间隔至少在100毫秒以上。
* @方法三:createBarcodePictureByString(String numStr,String path)
*/
public class BarcodeUtils {
static long timeMillis1;
static long timeMillis2;
// 求间隔时间时用到的标志位,每进来一次keyPressed方法,把flag置反,并且记录当前系统的时间毫秒值前后相减,得到间隔时间
static boolean IntervalFlag = false;