java swing 使用timer导致界面卡
我有一个功能,当界面打开时,就会有一个timer在执行,没三秒执行一次,执行过程中,界面会卡
代码如下
public class MainFrame extends JFrame implements ActionListener {
private Timer timer;
public MainFrame() {
super();
setBounds(100, 100, 800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
jbInit();
} catch (Throwable e) {
e.printStackTrace();
}
timer = new Timer(3000, this);
timer.start();
//
}
public void actionPerformed(ActionEvent e) {
int i = 0;
Cvrinfo cust = null;
try {
int intport = PropertiesUtil.getIntValue("cvrCom");
// Cvr100Proc demo = new Cvr100Proc();
int ret = 0;
String retstr = "";
ret = Cvr100Proc.CVR_InitComm(intport); // 第一步初始化
System.out.println("CVR_InitComm返回值11111:" + String.valueOf(ret));
if (ret == 1) {
while (isBool()) {
ret = Cvr100Proc.CVR_Authenticate(); // 第二步确认合法性
System.out.println("CVR_Authenticate返回值:"
+ String.valueOf(ret));
if (ret == 1) {
cust = new Cvrinfo();
ret = Cvr100Proc.CVR_Read_Content(4); // 第三步读取信息生成文件
System.out.println("CVR_Read_Content返回值:"
+ String.valueOf(ret));
retstr = Cvr100Proc.GetPeopleName();
cust.setPeopleName(retstr); // 姓名
retstr = Cvr100Proc.GetPeopleSex();
cust.setPeopleSex(retstr); // 性别
retstr = Cvr100Proc.GetPeopleNation();
cust.setPeopleNation(retstr); // 民族
retstr = Cvr100Proc.GetPeopleBirthday();
cust.setPeopleBirthday(retstr); // 出生日期:" + retstr);
retstr = Cvr100Proc.GetPeopleAddress();
cust.setPeopleAddress(retstr); // 地址:" + retstr);
retstr = Cvr100Proc.GetPeopleIDCode();
cust.setPeopleIDCode(retstr); // 身份证" + retstr);
retstr = Cvr100Proc.GetDepartment();
cust.setDepartment(retstr); // 发证机关:" + retstr);
retstr = Cvr100Proc.GetStartDate();
cust.setStartDate(retstr); // 开始日期" + retstr);
retstr = Cvr100Proc.GetEndDate();
cust.setEndDate(retstr); // 有效结束日期:" + retstr);
break;
} else {
continue;
}
}
retstr = Cvr100Proc.GetManuID();
ret = Cvr100Proc.CVR_CloseComm(); // 最后关闭连接
}
if (cust != null) {
// cust=new Cvrinfo();
String msg=com.common.ReadFromFile.readFileByLines(PropertiesUtil.getStrValue("filepath"));
String[] objs=msg.split("\\|");
String days=com.common.ConvertDemo.getDate();
OrderInfo info = new OrderInfo();
info.setOrderdate(days);
info.setOrdery(days.substring(0, 4));
info.setOrderym(days.substring(0, 7));
info.setOrderymd(days.substring(0, 10));
info.setTrip(objs[0]);
info.setPrice(objs[1]);
info.setCcard(cust.getPeopleIDCode());
info.setCname(cust.getPeopleName());
info.setSaler(this.us.getName());
OrderDAO dao = new OrderDAO();
i=dao.saveOrder(info);
}
} catch (Exception ex) {
com.bltx.cvr.LogInit.write("扫描异常了",ex);
}
if(cust!=null&&!cust.getPeopleName().equals("")){
if(i==0){
JOptionPane.showMessageDialog(null, "出单失败!");
}
}
}
}