62,628
社区成员
发帖
与我相关
我的任务
分享
/*条码比对程序*/
import java.awt.*;
import java.awt.List;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class SnTest3 extends JFrame{
private JPanel jp=new JPanel(); //创建JPanel对象(中间容器)
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); //创建List组件
//构造方法
public SnTest3(){
jp.setLayout(null); //设置中间容器的Layout为空
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);
info.setBounds(100, 140, 180, 320);
jp.add(info);
jlSum.setBounds(100,465,180, 26);
jp.add(jlSum);
//注册事件监听者
jtextSN1.addActionListener(new Listener());
jtextSN2.addActionListener(new Listener());
jtextSN3.addActionListener(new Listener());
this.add(jp); //将中间容器添加到顶层窗体中
this.setTitle("条码比对程序"); //设置顶层窗体标题
this.setResizable(false); //设置顶层窗体最大化不可见
this.setBounds(500, 100, 320, 520); //设置顶层窗体位置和大小
this.setVisible(true); //设置顶层窗体显示可见
}
public class Listener implements ActionListener{ //定义监听者类,并实现接口中的方法
public void actionPerformed(ActionEvent e){ //实现actionPerformed()方法处理事件
String s1="",s2="",s3="";
if(info.getItemCount()>99){
JOptionPane.showMessageDialog(null, "对不起,已超过100行!");
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
return;
}
s1=jtextSN1.getText();
s2=jtextSN2.getText();
s3=jtextSN3.getText();
int line=info.getItemCount();
//条码输入光标移位,条码比对**
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();
for(int i=0;i<info.getItemCount();i++){ //判断已录入过的条码是否与正在比对的条码重复
if(info.getItem(i).equals(sn)){ //如果重复,弹出警告对话框,且跳出循环
JOptionPane.showMessageDialog(null, "录入条码重复!","警告",JOptionPane.WARNING_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
return; //跳出循环
}
}
info.add(sn); //如果不重复,则将比对后的条码录入List
jlSum.setText("共扫入"+(line+1)+"行");
jtextSN3.setText("");
jtextSN2.setText("");
jtextSN1.setText("");
jtextSN1.requestFocus();
}else{
JOptionPane.showMessageDialog(null, "条码比对错误!","错误",JOptionPane.WARNING_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
}
} //actionPerformed方法
//思考如何将List组件的数据导出到文本文档中****
} //Listener类
public static void main(String[] args){
SnTest3 st=new SnTest3();
}
}
/*条码比对程序*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;
public class SnTest4 {
JFrame jf=new JFrame();
private JPanel jp=new JPanel(); //创建JPanel对象(中间容器)
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); //创建List组件
private JButton filesave=new JButton("存储文件");
private JLabel label=new JLabel("",JLabel.CENTER);
JFileChooser fileChooser=null;
//构造方法
public SnTest4(){
fileChooser=new JFileChooser("E:\\java_work"); //选择文件目录的初始位置
fileChooser.addChoosableFileFilter(new TXTFileFilter("java"));
fileChooser.addChoosableFileFilter(new TXTFileFilter("txt")); //addChoosableFileFilter方法加入欲过滤的类型
jp.setLayout(null); //设置中间容器的Layout为空
//jp.setBorder(BorderFactory.createTitledBorder(label.getText()));
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);
info.setBounds(100, 140, 180, 320);
jp.add(info);
jlSum.setBounds(100,465,80, 26);
jp.add(jlSum);
filesave.setBounds(180,465,100,26);
jp.add(filesave); //?存储文件实现按钮
//注册事件监听者
jtextSN1.addActionListener(new Listener());
jtextSN2.addActionListener(new Listener());
jtextSN3.addActionListener(new Listener());
filesave.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ //实现存储文件按钮功能
File file=null;
int result;
/***实现“存储文件”按钮文件功能***/
if(e.getActionCommand()=="存储文件"){
result=fileChooser.showSaveDialog(jf);
file=null;
//String fileName;
//当用户没有选择文件,而是自己键入文件名称时,系统会自动以此为文件名建立新文件
if(result==JFileChooser.APPROVE_OPTION){
file=fileChooser.getSelectedFile();
//label.setText("你选择存储的文件名称"+file.getName());
jp.setBorder(BorderFactory.createTitledBorder("你选择存储的文件名称"+file.getName()));
}else if(result==JFileChooser.CANCEL_OPTION){
//label.setText("您没有选择任何文件");
jp.setBorder(BorderFactory.createTitledBorder("您没有选择任何文件"));
}
}
//保存文件需要用到输入输出流的知识,代码如下
FileOutputStream fileOutStream=null;
//使用FileOutputStream写入文件,在这个范例中写文件的方式是将之前内容清除并重新写入
//若想把新增的内容加在原有的文件内容后,可以使用FileOutStream(String name,Boolean append)构造函数
if(file!=null){
try{
fileOutStream=new FileOutputStream(file,true); //将新增的内容加在原有的文件内容后
}catch(FileNotFoundException fe){
label.setText("File Not Found");
return;
}
try{
for(String content:info.getItems()){ //list组件是以数组方式存放数据,所以要使用到for循环
content+="\r\n"; //每一条数据后加入回车换行
fileOutStream.write(content.getBytes());
}
}catch(IOException ioe){
label.setText("文件写入错误");
}
finally{
try{
if(fileOutStream!=null)
fileOutStream.close();
}catch(IOException ioe2){}
}
}
}
});
jf.add(jp); //将中间容器添加到顶层窗体中
jf.setTitle("条码比对程序"); //设置顶层窗体标题
jf.setResizable(false); //设置顶层窗体最大化不可见
jf.setBounds(500, 100, 320, 530); //设置顶层窗体位置和大小
jf.setVisible(true); //设置顶层窗体显示可见
}
public class Listener implements ActionListener{ //定义监听者类,并实现接口中的方法进行比对操作
public void actionPerformed(ActionEvent e){ //实现actionPerformed()方法处理事件
String s1="",s2="",s3="";
if(info.getItemCount()>99){
JOptionPane.showMessageDialog(null, "对不起,已超过100行!");
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
return;
}
s1=jtextSN1.getText();
s2=jtextSN2.getText();
s3=jtextSN3.getText();
int line=info.getItemCount();
//条码输入光标移位,条码比对**
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();
for(int i=0;i<info.getItemCount();i++){ //判断已录入过的条码是否与正在比对的条码重复
if(info.getItem(i).equals(sn)){ //如果重复,弹出警告对话框,且跳出循环
JOptionPane.showMessageDialog(null, "条码["+info.getItem(i)+"]重复!","警告",JOptionPane.WARNING_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
return; //跳出程序
}
}
info.add(sn); //如果不重复,则将比对后的条码录入List
jlSum.setText("共扫入"+(line+1)+"行");
jtextSN3.setText("");
jtextSN2.setText("");
jtextSN1.setText("");
jtextSN1.requestFocus();
}else{
JOptionPane.showMessageDialog(null, "条码比对错误!","错误",JOptionPane.ERROR_MESSAGE);
jtextSN1.setText("");
jtextSN2.setText("");
jtextSN3.setText("");
jtextSN1.requestFocus();
}
} //actionPerformed方法
//思考如何将List组件的数据导出到文本文档中****
} //Listener类
public static void main(String[] args){
SnTest4 st=new SnTest4();
}
}
//定义过滤文件类型类
class TXTFileFilter extends FileFilter{
String ext;
public TXTFileFilter(String ext) {
this.ext=ext;
// TODO Auto-generated constructor stub
}
public boolean accept(File file) {
// TODO Auto-generated method stub
if(file.isDirectory()){
return true;
}
String fileName=file.getName();
int index=fileName.lastIndexOf('.');
if(index>0&&index<fileName.length()-1){
String extension=fileName.substring(index+1).toLowerCase();
if(extension.equals(ext))
return true;
}
return false;
}
public String getDescription() {
// TODO Auto-generated method stub
if(ext.equals("txt"))
return "TXT Source File(*.txt)";
if(ext.equals("java"))
return "JAVA Source File(*.java)";
return "";

}
}