Java GUI - SwingWorker和gif

时间:2014-04-15 16:54:32

标签: gif swingworker

好的,所以我正在做一些解析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。

0 个答案:

没有答案