62,628
社区成员
发帖
与我相关
我的任务
分享
/*条码比对程序*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class SNTest extends JFrame{
//创建JPanel对象
private JPanel jp=new JPanel();
private JLabel[] jlArray={new JLabel("产 品 条 码"),new JLabel("保修卡条码"),new JLabel("外 箱 条 码")};
private JTextField jtSum=new JTextField();
private JTextField jtextSN1=new JTextField();
private JTextField jtextSN2=new JTextField();
private JTextField jtextSN3=new JTextField();
private JTextArea jta=new JTextArea();
//构造方法
public SNTest(){
jp.setLayout(null);
jlArray[0].setBounds(30, 20, 80, 26);
jp.add(jlArray[0]);
jlArray[1].setBounds(30, 60, 80, 26);
jp.add(jlArray[1]);
jlArray[2].setBounds(30, 100, 80, 26);
jp.add(jlArray[2]);
jtextSN1.setBounds(100,20,180,26);
//jtextSN1.setText("219801A0E0173000016");
jp.add(jtextSN1);
jtextSN2.setBounds(100,60,180,26);
jp.add(jtextSN2);
jtextSN3.setBounds(100,100,180,26);
jp.add(jtextSN3);
jta.setBounds(100, 140, 180, 320);
jp.add(jta);
jtSum.setBounds(100,465,180, 26);
jp.add(jtSum);
//注册事件监听者
jtextSN1.addActionListener(new Listener());
jtextSN2.addActionListener(new Listener());
jtextSN3.addActionListener(new Listener());
jtSum.addActionListener(new Listener());
//加载窗体
this.add(jp);
this.setTitle("条码比对程序");
this.setResizable(false);
this.setBounds(500, 100, 320, 530);
this.setVisible(true);
//将显示比对数据的文本域与显示总行数的文本框置于不可编辑状态
jta.setEditable(false);
jtSum.setEditable(false);
}
//定义监听者类,并实现接口中的方法
public class Listener implements ActionListener{
//实现actionPerformed()方法处理事件
public void actionPerformed(ActionEvent e){
String s1="",s2="",s3="";
if(jta.getLineCount()>100){
JOptionPane.showMessageDialog(null, "对不起,已超过100行!");
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
return;
}
s1=jtextSN1.getText();
s2=jtextSN2.getText();
s3=jtextSN3.getText();
int i=jta.getLineCount();
//条码输入光标移位,条码比对
if(s1.equals("")){
jtextSN1.requestFocus();
}else if(s2.equals("")){
jtextSN2.requestFocus();
}else if(s3.equals("")){
jtextSN3.requestFocus();
}else if(s1.equals(s2)&&s2.equals(s3)){
//将文本框中内容转换为大写
String sn=s3.toUpperCase();
//将文本框中的内容添加到文本域中
jta.append(sn+"\n");
//JOptionPane.showMessageDialog(null, "已录入第"+i+"行");
//显示扫入的总行数
jtSum.setText("共扫入"+i+"行");
jtextSN3.setText("");
jtextSN2.setText("");
jtextSN1.setText("");
jtextSN1.requestFocus();
}else{
JOptionPane.showMessageDialog(null, "条码比对错误!","错误",JOptionPane.WARNING_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
}
//思考条码重复如何解决
//String j1=jta.getText();
}
}
public static void main(String[] args){
SNTest st=new SNTest();
}
}
/*条码比对程序*/
import java.awt.*;
import java.awt.List;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class SnTest2 extends JFrame{
//创建JPanel对象
private JPanel jp=new JPanel();
//private JScrollPane sp=new JScrollPane(); //
private JLabel[] jlArray={new JLabel("产 品 条 码"),new JLabel("保修卡条码"),new JLabel("外 箱 条 码")};
JLabel jlSum=new JLabel();
private JTextField jtextSN1=new JTextField();
private JTextField jtextSN2=new JTextField();
private JTextField jtextSN3=new JTextField();
//private List info=new List(20);
private JTextArea jta=new JTextArea();
//构造方法
public SnTest2(){
jp.setLayout(null);
jlArray[0].setBounds(30, 20, 80, 26);
jp.add(jlArray[0]);
jlArray[1].setBounds(30, 60, 80, 26);
jp.add(jlArray[1]);
jlArray[2].setBounds(30, 100, 80, 26);
jp.add(jlArray[2]);
jtextSN1.setBounds(100,20,180,26);
//jtextSN1.setText("219801A0E0173000016");
jp.add(jtextSN1);
jtextSN2.setBounds(100,60,180,26);
jp.add(jtextSN2);
jtextSN3.setBounds(100,100,180,26);
jp.add(jtextSN3);
jta.setBounds(100, 140, 180, 320);
//JScrollPane sp=new JScrollPane(jta,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jp.add(jta);
jlSum.setBounds(100,465,180, 26);
jp.add(jlSum);
//注册事件监听者
jtextSN1.addActionListener(new Listener());
jtextSN2.addActionListener(new Listener());
jtextSN3.addActionListener(new Listener());
// jlSum.addActionListener(new Listener());
//加载窗体
//jp.add(sp);
this.add(jp);
this.setTitle("条码比对程序");
this.setResizable(false);
this.setBounds(500, 100, 320, 520);
this.setVisible(true);
}
//定义监听者类,并实现接口中的方法
public class Listener implements ActionListener{
//实现actionPerformed()方法处理事件
public void actionPerformed(ActionEvent e){
String s1="",s2="",s3="";
if(jta.getLineCount()>100){
JOptionPane.showMessageDialog(null, "对不起,已超过100行!");
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
return;
}
s1=jtextSN1.getText();
s2=jtextSN2.getText();
s3=jtextSN3.getText();
int i=jta.getLineCount();
//条码输入光标移位,条码比对
if(s1.equals("")){ //判断光标是否定位在待输入的空白文本框内
jtextSN1.requestFocus();
}else if(s2.equals("")){
jtextSN2.requestFocus();
}else if(s3.equals("")){
jtextSN3.requestFocus();
}else if(s1.equals(s2)&&s2.equals(s3)){ //判断扫入的条码是否一致
//将文本框中内容转换为大写
String sn=s3.toUpperCase();
if(jta.getText().indexOf(sn)!=-1){ //判断已录入的条码是否与正在比对的条码与重复(录入的条码是否包含待录条码)
JOptionPane.showMessageDialog(null, "录入条码重复!","警告",JOptionPane.WARNING_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
}else{
//将文本框中的内容添加到文本域中
jta.append(sn+"\n");
//将文本域置于不可编辑状态
jta.setEditable(false);
//JOptionPane.showMessageDialog(null, "已录入第"+i+"行");
jlSum.setText("共扫入"+i+"行");
jtextSN3.setText("");
jtextSN2.setText("");
jtextSN1.setText("");
jtextSN1.requestFocus();
}
}else{
JOptionPane.showMessageDialog(null, "条码比对错误!","错误",JOptionPane.WARNING_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
}
}
}
public static void main(String[] args){
SnTest2 st=new SnTest2();
}
}
文本域条码解决条码重复的方案,见if(jta.getText().indexOf(sn)!=-1)这行的判断语句