好的,所以我正在做一些解析SwingWorker中文档的数据,这花费了相当多的时间。 我在做这个时显示“加载gif”作为JButton图标,并且每15%完成更新标签。 它的工作原理,但唯一的问题是gif移动缓慢或某些停止秒然后重新开始。 GIF基本上没有动画流畅。 JButton已被禁用,我将此礼物设置为禁用JButton的图标。
在MainGUI课程中:
jButton3.setDisabledIcon(new javax.swing.ImageIcon(getClass().getResource("/images/loading.gif")));
用户点击按钮后,我将其称为:
runLoader=new CashLoader(jButton3, jLabel2, ucty, userLock);
jButton3.setEnabled(false);
jLabel2.setForeground(Color.GRAY);
executor.execute(runLoader);
CashLoader线程执行此操作:
@Override
protected Object doInBackground() {
// long code is here
// somewhere in the code I call evey 15% done this:
publish(new PublishingClass(sum, true));
}
@Override
protected void process(List<PublishingClass> sum){
for (PublishingClass publishingThing : sum) {
if (publishingThing .isOrangeColor()) lblSum.setForeground(new Color(226,182,3));
lblSum.setText(""+publishingThing .getNumber()+" %");
}
}
@Override
protected void done(){
btnReload.setEnabled(true);
...
}
这是代码的分类器版本。正如您所看到的,我在使用JButton的SwingWorker doInBackground()方法中没有做任何事情。一旦设置为禁用,它应该将gif显示为其图标。这显然正在做,但不顺利,它只是停止几秒钟或一旦我用鼠标移动窗口然后它开始移动GIF。它基本上显示了滞后的GIF。