进度条实现倒计时多少秒后可继续操作原创
1人赞赏了该文章
241次浏览
未经作者许可,禁止转载编辑于2024年06月19日 15:13:53
执行某些操作时弹窗,需要强制用户阅读同意隐私条款,或者告知某些安全信息后才可操作。
实现方案:
1:使用进度条控件的自动刷新功能
2:隐藏字段记录进度,回写页面标签值,展示倒计时多少秒
代码实现
1:实现进度条接口
implements ProgresssListener
2:监听进度条控件
public void registerListener(EventObject e) {
//注册进度条的监听
ProgressBar progressbar = (ProgressBar)getControl("kdtest_progressbarap");
progressbar.addProgressListener(this);
}
//注册进度条的监听
ProgressBar progressbar = (ProgressBar)getControl("kdtest_progressbarap");
progressbar.addProgressListener(this);
}
3:启动进度条
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
ProgressBar bar = this.getView().getControl("kdtest_progressbarap");
IClientViewProxy proxy= this.getView().getService(IClientViewProxy.class);
proxy.setFieldProperty(bar.getKey(), ClientProperties.Percent, 0);
bar.start();
this.getView().setVisible(false,"btnok");
this.getView().setVisible(true,"kdtest_labelap1");
}
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
ProgressBar bar = this.getView().getControl("kdtest_progressbarap");
IClientViewProxy proxy= this.getView().getService(IClientViewProxy.class);
proxy.setFieldProperty(bar.getKey(), ClientProperties.Percent, 0);
bar.start();
this.getView().setVisible(false,"btnok");
this.getView().setVisible(true,"kdtest_labelap1");
}
4:刷新进度赋值控制显隐
@Override
public void onProgress(ProgressEvent evt) {
IFormView view = this.getView();
ProgressBar bar = view.getControl("kdtest_progressbarap");
// getProgress 需要自己实现
Integer progress = (Integer)this.getModel().getValue("kdtest_integerfield");
if(progress >= 90) {
this.getView().setVisible(true,"btnok");
this.getView().setVisible(false,"kdtest_labelap1");
evt.setProgress(100);
bar.stop();
} else {
int number = progress + 10;
evt.setProgress(number);
this.getModel().setValue("kdtest_integerfield", number);
Label label = (Label)this.getView().getControl("kdtest_labelap1");
label.setText( 10 - number/10 + "S");
}
}
public void onProgress(ProgressEvent evt) {
IFormView view = this.getView();
ProgressBar bar = view.getControl("kdtest_progressbarap");
// getProgress 需要自己实现
Integer progress = (Integer)this.getModel().getValue("kdtest_integerfield");
if(progress >= 90) {
this.getView().setVisible(true,"btnok");
this.getView().setVisible(false,"kdtest_labelap1");
evt.setProgress(100);
bar.stop();
} else {
int number = progress + 10;
evt.setProgress(number);
this.getModel().setValue("kdtest_integerfield", number);
Label label = (Label)this.getView().getControl("kdtest_labelap1");
label.setText( 10 - number/10 + "S");
}
}
使用场景:
需要强制阅读某些条款多少秒后可操作
赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读