效果如图所示:
如何实现该功能?很简单,将点击事件的执行效果放在一个线程中,在该线程执行的时候显示圈圈即可
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
tqflag = false;
Vector v = mycomboBox.getComboVc();
if (v.size() == 0) {
Msg("请选择状态!");
return;
}
JFrame frame = (JFrame) tabPanel.getRootPane().getParent();
Thread calculateYItemThread = new Thread(new sjjhThread()); //启动数据导入线程
calculateYItemThread.start();
WaitingDialogFactory.popUpWaitingDialog(frame, calculateYItemThread, "正在提取数据...");
frame.validate();
if (tqflag) {
Msg("提取计划成功!");
this.changeTable();
this.sbsb();
} else {
Msg("提取计划失败!");
}
}
boolean tqflag = false;
class sjjhThread extends Thread {
@Override
public void run() {
Vector v = mycomboBox.getComboVc();
Iterator y = v.iterator();
List<String> stateList = new ArrayList<String>();
while (y.hasNext()) {
stateList.add(y.next().toString());
}
tqflag = service_import.importYdJxjh(pdate, stateList);
}
}
注意:每次点击按钮的时候,需要将tqflag设为空,避免上一次的点击操作对当前事件的影响。用tqflag将线程中需要判断的逻辑成功与否提到外面来。避免出现,当弹出执行失败(成功)的弹窗时,“正在校核。。。”的效果图依然存在。