Java 条形码扫描器逐字扫描
我已经尝试了一段时间,但我想不出一种方法,只有在条形码扫描仪完成扫描后才能将文本从文本框中取出。我正在使用Swing框架和Java。如果文本被粘贴(Ctrl+V)到JTextbox中,我的代码就可以工作,但条形码扫描器无法工作,因为我的方法依次对条形码的每两个字符运行一次 这是我的密码:Java 条形码扫描器逐字扫描,java,swing,documentlistener,Java,Swing,Documentlistener,我已经尝试了一段时间,但我想不出一种方法,只有在条形码扫描仪完成扫描后才能将文本从文本框中取出。我正在使用Swing框架和Java。如果文本被粘贴(Ctrl+V)到JTextbox中,我的代码就可以工作,但条形码扫描器无法工作,因为我的方法依次对条形码的每两个字符运行一次 这是我的密码: public class pos extends javax.swing.JFrame{ private Timer updateTimer; private ResultSet data; ResultSet
public class pos extends javax.swing.JFrame{
private Timer updateTimer;
private ResultSet data;
ResultSet rs = null;
PreparedStatement pst = null;
public pos() {
initComponents();
this.setLocationRelativeTo(null);
Function f = new Function();
updateTimer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ResultSet rs = null;
rs = f.find(prodID.getText());
data = rs;
}
});
updateTimer.setRepeats(false);
prodID.getDocument().addDocumentListener(new DocumentListener(){
@Override
public void insertUpdate(DocumentEvent arg0){
warn();
}
@Override
public void removeUpdate(DocumentEvent arg0){
warn();
}
@Override
public void changedUpdate(DocumentEvent arg0){
warn();
}
});
}
protected void warn(){
try{
if(this.data.next()){
prodName.setText(this.data.getString("prodName"));
priceField.setText(String.valueOf(new Double(this.data.getString("price"))));
}else{
JOptionPane.showMessageDialog(null, "No Data for this ID");
}
}catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
updateTimer.restart();
}
public Connection getConnection(){
Connection con = null;
try{
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/fmgaccount","root","");
}catch(Exception ex){
}
return con;
}
public class Function{
Connection con = null;
public ResultSet find(String s){
try{
con = getConnection();
pst = con.prepareStatement("SELECT prodName, price FROM deliverystocks WHERE prodID=?");
pst.setString(1,s);
rs = pst.executeQuery();
}catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
return rs;
}
}
1) 为了更快地获得更好的帮助,请发布一个or。2) 使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码的流程更易于遵循!您需要一个按钮来“处理”输入到文本字段中的数据。您永远不知道用户是否要键入更多文本,或者扫描仪将扫描更多文本,因此您需要用户单击按钮以指示已输入文本,以便继续处理。或者,文本的大小是固定的,在这种情况下,您只需检查文本的长度,并在输入正确长度的文本后自动进入流程。